diff --git a/tests/scenarios/Templates/TemplatesBibOuverturesTest.php b/tests/scenarios/Templates/TemplatesBibOuverturesTest.php new file mode 100644 index 0000000000000000000000000000000000000000..9cd6b561787ca0911a3e7959de04eb4ff9dc1c02 --- /dev/null +++ b/tests/scenarios/Templates/TemplatesBibOuverturesTest.php @@ -0,0 +1,146 @@ +<?php +/** + * Copyright (c) 2012-2022, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class TemplatesBibOuverturesTest extends AbstractControllerTestCase { + + public function setUp() { + parent::setUp(); + + $this->_buildTemplateProfil(['id' => 42, + 'libelle' => 'Template ouvertures']); + + $time_source = new TimeSourceForTest('2022-07-01 14:30:00'); + Class_Bib::setTimeSource($time_source); + ZendAfi_View_Helper_RenderLibraryOpening::setTimeSource($time_source); + Class_Ouverture_Visitor::setTimeSource($time_source); + + $this->fixture(Class_Bib::class, + ['id' => 10, + 'libelle' => 'Annecy' + ]); + + $this->fixture(Class_Ouverture::class, + ['id' => 100, + 'id_site' => 10, + 'jour_semaine' => Class_Ouverture::VENDREDI, + 'debut_matin' => '08:00:00', + 'fin_matin' => '12:00:00', + 'debut_apres_midi' => '13:00:00', + 'fin_apres_midi' => '18:00:00', + 'label' => 'Horaires habituelles' + ]); + + $this->fixture(Class_Ouverture::class, + ['id' => 101, + 'id_site' => 10, + 'jour_semaine' => Class_Ouverture::JEUDI, + 'debut_matin' => '09:00:00', + 'fin_matin' => '12:00:00', + 'debut_apres_midi' => '14:00:00', + 'fin_apres_midi' => '17:00:00', + 'label' => 'Changement ponctuel', + 'validity_start' => '2022-07-01', + 'validity_end' => '2022-07-15' + ]); + + $this->fixture(Class_Ouverture::class, + ['id' => 102, + 'id_site' => 10, + 'jour_semaine' => Class_Ouverture::JEUDI, + 'debut_matin' => '09:00:00', + 'fin_matin' => '12:00:00', + 'debut_apres_midi' => '00:00:00', + 'fin_apres_midi' => '00:00:00', + 'label' => 'Changement ponctuel', + 'validity_start' => '2022-06-15', + 'validity_end' => '2022-07-20' + ]); + + $this->fixture(Class_Ouverture::class, + ['id' => 103, + 'id_site' => 10, + 'jour_semaine' => Class_Ouverture::AUCUN_JOUR, + 'jour' => '2022-07-04', + 'debut_matin' => '00:00', + 'fin_matin' => '00:00', + 'debut_apres_midi' => '00:00', + 'fin_apres_midi' => '00:00', + 'label' => 'Fermeture ponctuel', + 'validity_start' => '2022-06-25', + 'validity_end' => '2022-07-04' + ]); + + $this->fixture(Class_Ouverture::class, + ['id' => 104, + 'id_site' => 10, + 'jour_semaine' => Class_Ouverture::JEUDI, + 'debut_matin' => '09:00:00', + 'fin_matin' => '11:00:00', + 'debut_apres_midi' => '15:00:00', + 'fin_apres_midi' => '17:00:00', + 'label' => 'Changement ponctuel', + 'validity_start' => '2022-06-20', + 'validity_end' => '2022-07-10' + ]); + + $this->dispatch('/bib/ouvertures/id/10'); + } + + + public function tearDown() { + Class_Bib::setTimeSource(null); + ZendAfi_View_Helper_RenderLibraryOpening::setTimeSource(null); + Class_Ouverture_Visitor::setTimeSource(null); + + parent::tearDown(); + } + + + /** @test */ + public function defaultOpeningShouldBeFirstLI_Horaires_Habituelles() { + $this->assertXPath('//div[@class="field-opening-hours"]/ul/li[1][@class="default_opening_hours"]/h3[text()="Horaires habituelles"]/following-sibling::ul/li[text()="Vendredi : 08h - 12h / 13h - 18h"]'); + } + + + /** @test */ + public function periodOpeningShouldBeSecondLI_Changement_Ponctuel_Mercredi() { + $this->assertXPath('//div[@class="field-opening-hours"]/ul/li[2][@class="period_opening_hours"]/h3[text()="Changement ponctuel du mercredi 15 juin au mercredi 20 juillet 2022"]/following-sibling::ul/li[text()="Jeudi : 09h - 12h"]'); + } + + + /** @test */ + public function periodOpeningShouldBeThirdLI_Changement_Ponctuel_Vendredi() { + $this->assertXPath('//div[@class="field-opening-hours"]/ul/li[3][@class="period_opening_hours"]/h3[text()="Changement ponctuel du vendredi 01 au vendredi 15 juillet 2022"]/following-sibling::ul/li[text()="Jeudi : 09h - 12h / 14h - 17h"]'); + } + + + /** @test */ + public function periodOpeningShouldBeForthLI_Changement_Ponctuel_Lundi() { + $this->assertXPath('//div[@class="field-opening-hours"]/ul/li[4][@class="period_opening_hours"]/h3[text()="Changement ponctuel du lundi 20 juin au dimanche 10 juillet 2022"]/following-sibling::ul/li[text()="Jeudi : 09h - 11h / 15h - 17h"]'); + } + + + /** @test */ + public function closingOpeningShouldBeFifthLI_Fermeture_Excptionnelle() { + $this->assertXPath('//div[@class="field-opening-hours"]/ul/li[5][@class="unexpected_closing_hours"]/h3[text()="Fermeture exceptionnelle"]/following-sibling::ul/li[text()="Fermeture ponctuel le lundi 04 juillet : fermé"]'); + } +}