diff options
-rw-r--r-- | includes/admin/views/_concerts_table.php | 8 | ||||
-rw-r--r-- | tests/ConcertsTableTest.php | 94 |
2 files changed, 98 insertions, 4 deletions
diff --git a/includes/admin/views/_concerts_table.php b/includes/admin/views/_concerts_table.php index cc9ce4d..a9e254e 100644 --- a/includes/admin/views/_concerts_table.php +++ b/includes/admin/views/_concerts_table.php @@ -70,7 +70,7 @@ if (!class_exists("GiglogAdmin_ConcertsTable")) } // Modify these to match the database structure // $content .= '<td>' . $row->id. '</td>'; - $content .= '<td></br></br></td>'; + $content .= '<td></td>'; $content .= '<td>' . $concert->cname() . '</td>'; $content .= '<td>' . $concert->venue()->name() . '</td>'; $fdate = strtotime($concert->cdate()); @@ -126,9 +126,9 @@ if (!class_exists("GiglogAdmin_ConcertsTable")) "Select venue..."); } //option to select own concerts only - $select .= '<input class="ownconc" type="checkbox" value="1"'; - if(isset($_POST['ownconcerts'])) $select .=' checked="checked" '; - $select.=' name="ownconcerts">Show own concerts only</input>'; + $select .= '<input name="ownconcerts" class="ownconc" type="checkbox" value="1"' + . checked(isset($_POST['ownconcerts']) ? $_POST['ownconcerts'] : false) + . '><label for="ownconcerts">Show own concerts only</label>'; $select .= '<input type="submit" value="APPLY"></form>'; diff --git a/tests/ConcertsTableTest.php b/tests/ConcertsTableTest.php new file mode 100644 index 0000000..73852c8 --- /dev/null +++ b/tests/ConcertsTableTest.php @@ -0,0 +1,94 @@ +<?php declare(strict_types=1); +// SPDX-FileCopyrightText: 2021 Andrea Chirulescu <andrea.chirulescu@gmail.com> +// SPDX-FileCopyrightText: 2021 Harald Eilertsen <haraldei@anduin.net> +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +class ConcertsTableTest extends WP_UnitTestCase +{ + const VENUES = [ + [ "Rockefeller Music Hall", "Oslo" ], + [ "Sentrum Scene", "Oslo" ], + [ "Revolver", "Oslo" ], + [ "Meieriet", "Sogndal" ], + ]; + + const CONCERTS = [ + [ "Concert at Rockefeller #", 0, 2 ], + [ "Concert at Sentrum Scene #", 1, 4 ], + [ "Concert at Revolver #", 2, 5 ], + [ "Concert at Meieriet #", 3, 5 ], + ]; + + private static $concerts = []; + + /* This function runs _once_ before all the test cases. + * + * Use it to set up a common state that all test cases can + * use + */ + static function wpSetUpBeforeClass() : void + { + $created_venues = []; + foreach (self::VENUES as $venue) { + $created_venues[] = GiglogAdmin_Venue::find_or_create($venue[0], $venue[1]); + } + + $today = date("Y-m-d"); + + foreach (self::CONCERTS as $concert) { + for ($i = 0; $i < $concert[2]; $i++) { + if ($concert[2] > 1) { + $concert_name = $concert[0] . ($i + 1); + } + else { + $concert_name = $concert[0]; + } + + self::$concerts[] = GiglogAdmin_Concert::create( + $concert_name, + $created_venues[$concert[1]]->id(), + $today, + "https://example.com/tickets/42", + "https://example.com/events/93"); + } + } + } + + /* This function runs _once_ after all the test cases in this class. + * + * It is needed to clean up changes in the database that we don't want + * to disturb any other tests. + */ + static function wpTearDownAfterClass() : void + { + global $wpdb; + + $tables = [ + "wpg_concerts", + "wpg_venues", + ]; + + foreach( $tables as $table ) { + $wpdb->query("DELETE FROM {$table}"); + } + } + + function testShowAllControlsToAdminOnAdminPage() { + $c = new GiglogAdmin_ConcertsTable(); + $html = $c->render(); + //$this->assertEquals('balle', $html); + + $doc = DOMDocument::loadHTML($html); + $forms = $doc->getElementsByTagName('form'); + $count = 0; + foreach ($forms as $form) { + $cls = $form->attributes->getNamedItem('class')->nodeValue; + if ($cls == 'assignit' || $cls == 'unassignit') { + $count++; + } + } + + $this->assertEquals($count, 64); + } +} |