diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/VenueTest.php | 92 | ||||
-rw-r--r-- | tests/stubs/wpdb_stub.php | 9 |
2 files changed, 101 insertions, 0 deletions
diff --git a/tests/VenueTest.php b/tests/VenueTest.php new file mode 100644 index 0000000..814bfe8 --- /dev/null +++ b/tests/VenueTest.php @@ -0,0 +1,92 @@ +<?php +declare(strict_types=1); + +use PHPUnit\Framework\TestCase; + +require 'tests/stubs/wpdb_stub.php'; +require 'includes/venue.php'; + +final class VenueTest extends TestCase +{ + public function testCreatingVenueWithName(): void + { + $venue = GiglogAdmin_Venue::create("Svene Samfunns- og Bedehus"); + $this->assertEquals("Svene Samfunns- og Bedehus", $venue->name()); + $this->assertEquals(1, $venue->id()); + } + + public function testFindOrCreateNonExistingVenue() : void + { + $venue = GiglogAdmin_Venue::find_or_create("Svene Samfunns- og Bedehus"); + $this->assertEquals("Svene Samfunns- og Bedehus", $venue->name()); + $this->assertEquals(1, $venue->id()); + } + + public function testFindOrCreateExistingVenue() : void + { + global $wpdb; + + $v = new stdClass(); + $v->id = 42; + $v->wpgvenue_name = 'Slarkhaillen'; + $v->wpgvenue_city = 'Ofoten'; + $v->wpgvenue_address = 'Baillsvingen 4'; + $v->wpgvenue_webpage = 'https://slarkhaillen.no'; + + $wpdb = $this->createStub(wpdb::class); + $wpdb->method('get_results')->willReturn(array($v)); + $venue = GiglogAdmin_Venue::find_or_create("Slarkhaillen"); + + $this->assertEquals(42, $venue->id()); + $this->assertEquals($v->wpgvenue_name, $venue->name()); + } + + public function testFindAllVenuesInCity() : void + { + global $wpdb; + + $results = array(); + for ($i = 0; $i < 3; $i++) { + $results[$i] = new stdClass(); + $results[$i]->id = 42 + $i; + $results[$i]->wpgvenue_name = "Venue #" . $i; + $results[$i]->wpgvenue_city = "Osaka"; + } + + $wpdb = $this->createStub(wpdb::class); + $wpdb->method('prepare')->willReturn("prepared"); + $wpdb->method('get_results')->willReturn($results); + + $venues = GiglogAdmin_Venue::venues_in_city("Osaka"); + + for ($i = 0; $i < 3; $i++) { + $this->assertEquals("Osaka", $venues[$i]->city()); + $this->assertEquals("Venue #" . $i, $venues[$i]->name()); + $this->assertEquals(42 + $i, $venues[$i]->id()); + } + } + + public function testFindAllVenues() : void + { + global $wpdb; + + $results = array(); + for ($i = 0; $i < 3; $i++) { + $results[$i] = new stdClass(); + $results[$i]->id = 42 + $i; + $results[$i]->wpgvenue_name = "Venue #" . $i; + $results[$i]->wpgvenue_city = "City #" . $i; + } + + $wpdb = $this->createStub(wpdb::class); + $wpdb->method('get_results')->willReturn($results); + + $venues = GiglogAdmin_Venue::all_venues(); + + for ($i = 0; $i < 3; $i++) { + $this->assertEquals("City #" . $i, $venues[$i]->city()); + $this->assertEquals("Venue #" . $i, $venues[$i]->name()); + $this->assertEquals(42 + $i, $venues[$i]->id()); + } + } +} diff --git a/tests/stubs/wpdb_stub.php b/tests/stubs/wpdb_stub.php new file mode 100644 index 0000000..72312bc --- /dev/null +++ b/tests/stubs/wpdb_stub.php @@ -0,0 +1,9 @@ +<?php +class wpdb { + public $insert_id = NULL; + public function insert(string $table, array $data) { $this->insert_id = 1; } + public function prepare(string $query, mixed $args) { return "prepared"; } + public function get_results(string $query) { return NULL; } +} + +$wpdb = new wpdb(); |