// SPDX-FileCopyrightText: 2021 Harald Eilertsen // // SPDX-License-Identifier: AGPL-3.0-or-later final class ConcertTest extends WP_UnitTestCase { public function testCreateConcert() : void { $venue = GiglogAdmin_Venue::create("a venue"); $today = date("Y-m-d"); $concert = GiglogAdmin_Concert::create( "a concert", $venue->id(), $today, "https://example.com/tickets/42", "https://example.com/events/93"); $this->assertEquals("a concert", $concert->cname()); $this->assertEquals($venue->id(), $concert->venue()->id()); $this->assertEquals($today, $concert->cdate()); $this->assertEquals("https://example.com/tickets/42", $concert->tickets()); $this->assertEquals("https://example.com/events/93", $concert->eventlink()); } public function testCreateExistingConcert() : void { $venue = GiglogAdmin_Venue::create("a venue"); $today = date("Y-m-d"); GiglogAdmin_Concert::create( "a concert", $venue->id(), $today, "https://example.com/tickets/42", "https://example.com/events/93"); $new = GiglogAdmin_Concert::create( "a concert", $venue->id(), $today, "https://example.com/tickets/42", "https://example.com/events/93"); $this->assertNull($new); } public function testCreateExistingConcertVariableCase() : void { $venue = GiglogAdmin_Venue::create("a venue"); $today = date("Y-m-d"); GiglogAdmin_Concert::create( "a concert123", $venue->id(), $today, "https://example.com/tickets/42", "https://example.com/events/93"); $new = GiglogAdmin_Concert::create( "a CoNceRt123", $venue->id(), $today, "https://example.com/tickets/42", "https://example.com/events/93"); $this->assertNull($new); } public function testGetConcertByIdReturnsFullConcertObject() : void { $venue = GiglogAdmin_Venue::create("a venue"); $today = date("Y-m-d"); $gig = GiglogAdmin_Concert::create( "a concert123", $venue->id(), $today, "https://example.com/tickets/42", "https://example.com/events/93"); $fetched_gig = GiglogAdmin_Concert::get($gig->id()); $this->assertEquals($gig->id(), $fetched_gig->id()); $this->assertEquals($gig->cname(), $fetched_gig->cname()); $this->assertEquals($venue->id(), $fetched_gig->venue()->id()); } public function testOnlyFetchConcertsFromGivenCity() : void { $venue1 = GiglogAdmin_Venue::create("Svene Bedehus", "Svene"); $venue2 = GiglogAdmin_Venue::create("Rockefeller Music Hall", "Oslo"); $venue3 = GiglogAdmin_Venue::create("Meieriet", "Sogndal"); for ($i = 0; $i < 4; $i++) { GiglogAdmin_Concert::create('Concert ' . $i, $venue1->id(), '', '', ''); } for ($i = 4; $i < 6; $i++) { GiglogAdmin_Concert::create('Concert ' . $i, $venue2->id(), '', '', ''); } for ($i = 6; $i < 11; $i++) { GiglogAdmin_Concert::create('Concert ' . $i, $venue3->id(), '', '', ''); } $gigs_in_svene = GiglogAdmin_Concert::find_concerts_in("Svene"); $this->assertEquals(4, count($gigs_in_svene)); while ($gig = array_pop($gigs_in_svene)) { $this->assertEquals("Svene", $gig->venue()->city()); } $gigs_in_oslo = GiglogAdmin_Concert::find_concerts_in("Oslo"); $this->assertEquals(2, count($gigs_in_oslo)); while ($gig = array_pop($gigs_in_oslo)) { $this->assertEquals("Oslo", $gig->venue()->city()); } $gigs_in_sogndal = GiglogAdmin_Concert::find_concerts_in("Sogndal"); $this->assertEquals(5, count($gigs_in_sogndal)); while ($gig = array_pop($gigs_in_sogndal)) { $this->assertEquals("Sogndal", $gig->venue()->city()); } } public function testOnlyFetchConcertsAtGivenVenue() : void { $venue1 = GiglogAdmin_Venue::create("Sentrum Scene", "Oslo"); $venue2 = GiglogAdmin_Venue::create("Rockefeller Music Hall", "Oslo"); $venue3 = GiglogAdmin_Venue::create("Revolver", "Oslo"); for ($i = 0; $i < 4; $i++) { GiglogAdmin_Concert::create('Concert ' . $i, $venue1->id(), '', '', ''); } for ($i = 4; $i < 6; $i++) { GiglogAdmin_Concert::create('Concert ' . $i, $venue2->id(), '', '', ''); } for ($i = 6; $i < 11; $i++) { GiglogAdmin_Concert::create('Concert ' . $i, $venue3->id(), '', '', ''); } $gigs_at_ss = GiglogAdmin_Concert::find_concerts_at($venue1); $this->assertEquals(4, count($gigs_at_ss)); while ($gig = array_pop($gigs_at_ss)) { $this->assertEquals("Sentrum Scene", $gig->venue()->name()); } $gigs_at_rmh = GiglogAdmin_Concert::find_concerts_at($venue2); $this->assertEquals(2, count($gigs_at_rmh)); while ($gig = array_pop($gigs_at_rmh)) { $this->assertEquals("Rockefeller Music Hall", $gig->venue()->name()); } $gigs_at_r = GiglogAdmin_Concert::find_concerts_at($venue3); $this->assertEquals(5, count($gigs_at_r)); while ($gig = array_pop($gigs_at_r)) { $this->assertEquals("Revolver", $gig->venue()->name()); } } }