<?php /** * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved. * * AFI-OPAC 2.0 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). * * AFI-OPAC 2.0 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 AFI-OPAC 2.0; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ require_once 'AdminAbstractControllerTestCase.php'; abstract class Admin_ProfilControllerPageAccueilJeunesseTestCase extends Admin_AbstractControllerTestCase { public function setUp() { parent::setUp(); $cfg_accueil = [ 'page_css' => '', 'use_parent_css' => 1, 'modules' => ['1' => array('division' => 4, 'type_module' => 'RECH_SIMPLE', 'preferences' => array()), '2' => array('division' => 1, 'type_module' => 'NEWS', 'preferences' => array()), '3' => array('division' => 2, 'type_module' => 'KIOSQUE', 'preferences' => array('nb_notices' => 12, 'nb_analyse' => 36, 'only_img' => 1)), '6' => array('division' => 2, 'type_module' => 'CRITIQUES', 'preferences' => array()), '8' => array('division' => 1, 'type_module' => 'RESERVATIONS', 'preferences' => array()), '9' => array('division' => 1, 'type_module' => 'PRETS', 'preferences' => array()), '10' => array('division' => 1, 'type_module' => 'NEWSLETTERS', 'preferences' => array()), '11' => array('division' => 1, 'type_module' => 'FORMATIONS', 'preferences' => array()), '12' => array('division' => 1, 'type_module' => 'MULTIMEDIA', 'preferences' => array()), '13' => array('division' => 1, 'type_module' => 'HISTORIQUE_RECHERCHES', 'preferences' => array()), '666' => array('division' => 1, 'type_module' => 'WRONG', 'preferences' => array()), '789' => ['division' => 1, 'type_module' => 'LOGIN', 'preferences' => ['titre'=>'Connection']]]]; $this->profil_jeunesse = Class_Profil::newInstanceWithId(7) ->setLibelle('Profil Jeunesse') ->setCfgAccueil($cfg_accueil); } } class Admin_ProfilControllerPageAccueilJeunesseTest extends Admin_ProfilControllerPageAccueilJeunesseTestCase { public function setUp() { parent::setUp(); $this->profil_wrapper = Storm_Test_ObjectWrapper ::onLoaderOfModel('Class_Profil') ->whenCalled('save') ->answers(true) ->getWrapper() ->whenCalled('findAllByZoneAndBib') ->answers(array($this->profil_jeunesse)) ->getWrapper(); ZendAfi_Auth::getInstance()->getIdentity()->ROLE_LEVEL = 7; $this->dispatch('/admin/profil/accueil/id_profil/7', true); } /** @test */ public function formActionUrlShouldBeOnIdProfilSeven() { $this->assertXPath('//form[contains(@action, "profil/accueil/id_profil/7")]'); } /** @test */ public function boitePretsShouldBeAvailable() { $this->assertXPathContentContains('//ul[@id="allItems"]/li[@id="PRETS"]','Prêts'); } /** @test */ public function boitePretsShouldBeInDivisionOne() { $this->assertXPath('//ul[@id="box1"]/li[@id="PRETS"][@id_module="9"]//img[contains(@onclick,"accueil/prets")]'); } /** @test */ public function boiteReservationsShouldBeAvailable() { $this->assertXPathContentContains('//ul[@id="allItems"]/li[@id="RESERVATIONS"]','Réservations'); } /** @test */ public function boiteReservationsShouldBeInDivisionOne() { $this->assertXPath('//ul[@id="box1"]/li[@id="RESERVATIONS"][@id_module="8"]//img[contains(@onclick,"accueil/reservations")]'); } /** @test */ public function boiteHistoriqueRecherchesShouldBeAvailable() { $this->assertXPathContentContains('//ul[@id="allItems"]/li[@id="HISTORIQUE_RECHERCHES"]','Historique recherches'); } /** @test */ public function boiteNewsShouldBeInDivisionOne() { $this->assertXPath('//ul[@id="box1"]/li[@id="NEWS"][@id_module="2"]'); } /** @test */ public function boiteKiosqueShouldBeInDivisionTwo() { $this->assertXPath('//ul[@id="box2"]/li[@id="KIOSQUE"][@id_module="3"]'); } /** @test */ public function boiteWrongShouldNotBeVisible() { $this->assertNotXPath('//li[@id_module="666"]'); } /** @test */ public function boiteCritiquesShouldBeInDivisionTwo() { $this->assertXPath('//ul[@id="box2"]/li[@id="CRITIQUES"][@id_module="6"]'); } /** @test */ public function preferencesBoiteKiosqueShouldBeEncodedInAttributeProprietes() { $this->assertXPath('//li[@id_module="3"][contains(@proprietes,"nb_notices=12/only_img=1/aleatoire=1")]'); } /** @test **/ public function useParentCssCheckboxShouldBeChecked() { $this->assertXPath('//input[@name="use_parent_css"][contains(@value,1)]'); } /** @test **/ public function pageCssShoudBeEmpty() { $this->assertXPath('//input[@name="page_css"][contains(@value,"")]',$this->_response->getBody()); } /** @test */ public function postingDataWithNoModifications() { $cfg_module = 'box1|2|NEWS|;box2|3|KIOSQUE|nb_notices=12/nb_analyse=36/only_img=1/;box2|6|CRITIQUES|'; $this ->getRequest() ->setMethod('POST') ->setPost(array('saveContent' => $cfg_module)); $this->dispatch('/admin/profil/accueil/id_profil/7'); $this->assertTrue($this->profil_wrapper->methodHasBeenCalled('save')); $this->assertRedirect('/admin/profil/accueil/id_profil/7'); return $this->profil_jeunesse; } /** * @depends postingDataWithNoModifications * @test */ public function shouldPutDefaultNewsPrefereces($profil_jeunesse) { $news = $profil_jeunesse->getModuleAccueilConfig(2); $this->assertEquals(1, $news['division']); $this->assertEquals('NEWS', $news['type_module']); $this->assertEquals('Articles', $news['preferences']['titre']); } /** * @depends postingDataWithNoModifications * @test */ public function shouldKeepKiosquePrefereces($profil_jeunesse) { $kiosque = $profil_jeunesse->getModuleAccueilConfig(3); $this->assertEquals(12, $kiosque['preferences']['nb_notices']); $this->assertEquals(36, $kiosque['preferences']['nb_analyse']); $this->assertEquals(2, $kiosque['division']); $this->assertEquals('KIOSQUE', $kiosque['type_module']); } /** * @depends postingDataWithNoModifications * @test */ public function shouldKeepRechSimpleInBanniere($profil_jeunesse) { $rech = $profil_jeunesse->getModuleAccueilConfig(1); $this->assertEquals(4, $rech['division']); } /** @test */ public function postingDataWithBoiteDeuxColonnes() { $cfg_module = 'box2|3|KIOSQUE|nb_notices=12/nb_analyse=36/only_img=1/;box2|6|CRITIQUES|;box2|new|CONTENEUR_DEUX_COLONNES|'; $this ->getRequest() ->setMethod('POST') ->setPost(array('saveContent' => $cfg_module)); $this->dispatch('/admin/profil/accueil/id_profil/7'); $this->assertTrue($this->profil_wrapper->methodHasBeenCalled('save')); $this->assertRedirect('/admin/profil/accueil/id_profil/7'); return $this->profil_jeunesse; } /** * @depends postingDataWithBoiteDeuxColonnes * @test */ public function boiteDeuxColonnesShouldGetIdFourAndDefaultValues($profil_jeunesse) { $b2cols = $profil_jeunesse->getModuleAccueilConfig(4); $this->assertEquals(2, $b2cols['division']); $this->assertEquals('CONTENEUR_DEUX_COLONNES', $b2cols['type_module']); $this->assertEquals('NEWS', $b2cols['preferences']['col_gauche_type']); $this->assertEquals('CRITIQUES', $b2cols['preferences']['col_droite_type']); } } class ProfilControllerPageAccueilWithTelephonePackMobileTest extends Admin_AbstractControllerTestCase { public function setUp() { parent::setUp(); Class_AdminVar::getLoader()->newInstanceWithId('PACK_MOBILE') ->setValeur(1); Class_AdminVar::getLoader()->newInstanceWithId('BIB_NUMERIQUE') ->setValeur(1); $profil_telephone = Class_Profil::getLoader() ->newInstanceWithId(3) ->setLibelle('iPhone') ->beTelephone(); $this->dispatch('/admin/profil/accueil/id_profil/3'); } /** @test */ public function moduleNewsShouldBeAvailable() { $this->assertXPath('//ul/li[@id="NEWS"]'); } /** @test */ public function moduleBibNumeriqueShouldBeAvailable() { $this->assertXPath('//ul/li[@id="BIB_NUMERIQUE"]'); } /** @test */ public function moduleCritiquesShouldBeAvailable() { $this->assertXPath('//ul/li[@id="CRITIQUES"]'); } /** @test */ public function moduleKiosqueShouldBeAvailable() { $this->assertXPath('//ul/li[@id="KIOSQUE"]'); } /** @test */ public function moduleLoginShouldNotBeAvailable() { $this->assertNotXPath('//ul/li[@id="LOGIN"]'); } } class ProfilControllerPageAccueilWithTelephoneNoPackMobileNoBibNumTest extends Admin_ProfilControllerPageAccueilJeunesseTestCase { public function setUp() { parent::setUp(); Class_AdminVar::getLoader()->newInstanceWithId('PACK_MOBILE') ->setValeur(0); Class_AdminVar::getLoader()->newInstanceWithId('BIBNUM') ->setValeur(0); $this->profil_jeunesse->beTelephone(); $this->dispatch('/admin/profil/accueil/id_profil/'.$this->profil_jeunesse->getId()); } /** @test */ public function moduleNewsShouldBeAvailable() { $this->assertXPath('//ul/li[@id="NEWS"]'); } /** @test */ public function moduleBibNumeriqueShouldNotBeAvailable() { $this->assertNotXPath('//ul/li[@id="BIB_NUMERIQUE"]'); } /** @test */ public function moduleCritiquesShouldNotBeAvailable() { $this->assertNotXPath('//ul/li[@id="CRITIQUES"]'); } /** @test */ public function moduleKiosqueShouldNotBeAvailable() { $this->assertNotXPath('//ul/li[@id="KIOSQUE"]'); } } class Admin_ProfilControllerPageAccueilJeunesseConfigPretsTest extends Admin_ProfilControllerPageAccueilJeunesseTestCase { public function setup() { parent::setup(); $this->dispatch('admin/accueil/prets?config=admin&id_profil=7&type_module=PRETS&id_module=9&proprietes=boite=/titre=Mes prets/',true); } /** @test */ public function actionShouldBePrets() { $this->assertAction('prets'); } /** @test */ public function titleShouldBeProprieteDuModulePret() { $this->assertXPathContentContains('//h1','Propriétés du module Prêts'); } /** @test */ public function comboBoiteShouldBePresent() { $this->assertXPath('//select[@name="boite"]/option[@value="boite_de_la_division_droite"]'); } /** @test */ public function titreInputShouldHaveValueMesPrets() { $this->assertXPath('//input[@name="titre"][@value="Mes prets"]'); } } class Admin_ProfilControllerPageAccueilJeunesseConfigEmptyPretTest extends Admin_ProfilControllerPageAccueilJeunesseTestCase { public function setup() { parent::setup(); $this->dispatch('admin/accueil/prets?config=admin&id_profil=7&type_module=PRETS&id_module=9',true); } /** @test */ public function titreInputShouldHaveValueMesPrets() { $this->assertXPath('//input[@name="titre"][@value="Mes prêts"]'); } } class Admin_ProfilControllerPageAccueilJeunesseConfigEmptyHistoriqueRecherchesTest extends Admin_ProfilControllerPageAccueilJeunesseTestCase { public function setup() { parent::setup(); $this->dispatch('admin/accueil/historique-recherches?config=admin&id_profil=7&type_module=HISTORIQUE_RECHERCHES&id_module=13',true); } /** @test */ public function titreInputShouldHaveValueMesPrets() { $this->assertXPath('//input[@name="titre"][@value="Mes recherches"]'); } } class Admin_ProfilControllerPageAccueilJeunesseConfigReservationsTest extends Admin_ProfilControllerPageAccueilJeunesseTestCase { public function setup() { parent::setup(); $this->dispatch('admin/accueil/reservations?config=admin&id_profil=7&type_module=RESERVATIONS&id_module=8&proprietes=boite=/titre=Mes reservations/',true); } /** @test */ public function actionShouldBeReservations() { $this->assertAction('reservations'); } /** @test */ public function titleShouldBeProprieteDuModuleReservations() { $this->assertXPathContentContains('//h1','Propriétés du module Réservations'); } /** @test */ public function comboBoiteShouldBePresent() { $this->assertXPath('//select[@name="boite"]/option[@value="boite_de_la_division_droite"]'); } /** @test */ public function titreInputShouldHaveValueMesReservations() { $this->assertXPath('//input[@name="titre"][@value="Mes reservations"]'); } } class Admin_ProfilControllerPageAccueilJeunesseConfigEmptyReservationTest extends Admin_ProfilControllerPageAccueilJeunesseTestCase { public function setup() { parent::setup(); $this->dispatch('admin/accueil/reservations?config=admin&id_profil=7&type_module=RESERVATIONS&id_module=8',true); } /** @test */ public function titreInputShouldHaveValueMesReservations() { $this->assertXPath('//input[@name="titre"][@value="Mes réservations"]'); } } class Admin_ProfilControllerPageAccueilJeunesseConfigNewslettersTest extends Admin_ProfilControllerPageAccueilJeunesseTestCase { public function setup() { parent::setup(); $this->dispatch('admin/accueil/newsletters?config=admin&id_profil=7&type_module=NEWSLETTERS&id_module=10&proprietes=boite=/titre=Mes newsletters/',true); } /** @test */ public function actionShouldBeNewsletters() { $this->assertAction('newsletters'); } /** @test */ public function titleShouldBeProprieteDuModuleNewsletters() { $this->assertXPathContentContains('//h1','Propriétés du module Lettres d\'informations',$this->_response->getBody()); } /** @test */ public function comboBoiteShouldBePresent() { $this->assertXPath('//select[@name="boite"]/option[@value="boite_de_la_division_droite"]'); } /** @test */ public function titreInputShouldHaveValueMesNewsletters() { $this->assertXPath('//input[@name="titre"][@value="Mes newsletters"]',$this->_response->getBody()); } } class Admin_ProfilControllerPageAccueilJeunesseConfigEmptyNewsletterTest extends Admin_ProfilControllerPageAccueilJeunesseTestCase { public function setup() { parent::setup(); $this->dispatch('admin/accueil/newsletters?config=admin&id_profil=7&type_module=NEWSLETTERS&id_module=11',true); } /** @test */ public function titreInputShouldHaveValueMesNewsletters() { $this->assertXPath('//input[@name="titre"][@value="Lettres d\'informations"]',$this->_response->getBody()); } } class Admin_ProfilControllerPageAccueilJeunesseConfigMultimediaTest extends Admin_ProfilControllerPageAccueilJeunesseTestCase { public function setup() { parent::setup(); $this->dispatch('admin/accueil/multimedia?config=admin&id_profil=7&type_module=MULTIMEDIA&id_module=8&proprietes=boite=/titre=Postes multimedia/',true); } /** @test */ public function actionShouldBeMultimedia() { $this->assertAction('multimedia'); } /** @test */ public function titleShouldBeProprieteDuModuleMultimedia() { $this->assertXPathContentContains('//h1','Propriétés du module Postes Multimédia'); } /** @test */ public function comboBoiteShouldBePresent() { $this->assertXPath('//select[@name="boite"]/option[@value="boite_de_la_division_droite"]'); } /** @test */ public function titreInputShouldHaveValueMesMultimedia() { $this->assertXPath('//input[@name="titre"][@value="Postes multimedia"]'); } } class Admin_ProfilControllerPageAccueilJeunesseConfigEmptyMultimediaTest extends Admin_ProfilControllerPageAccueilJeunesseTestCase { public function setup() { parent::setup(); $this->dispatch('admin/accueil/multimedia?config=admin&id_profil=7&type_module=MULTIMEDIA&id_module=11',true); } /** @test */ public function titreInputShouldHaveValuePostesMultimedia() { $this->assertXPath('//input[@name="titre"][@value="Postes multimédia"]'); } } class Admin_ProfilControllerPageAccueilJeunesseConfigTest extends Admin_ProfilControllerPageAccueilJeunesseTest { public function setup(){ parent::setup(); } /** @test */ public function PageAccueilJeunesseConfigModuleTypeLoginShouldReturnConnexionAsTitrePreferences() { $login_module_preferences = $this->profil_jeunesse->getModuleAccueilPreferencesByType('LOGIN'); $this->assertEquals('Connection',$login_module_preferences['titre']); } } class Admin_ProfilControllerPageAccueilJeunesseWithUseParentCssFalseTest extends Admin_ProfilControllerPageAccueilJeunesseTestCase { public function setUp() { parent::setup(); $profil_jeunesse_css = $this->profil_jeunesse; $profil_jeunesse_css->setUseParentCss(false); $this->profil_wrapper = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Profil') ->whenCalled('save') ->answers(true) ->getWrapper() ->whenCalled('findAllByZoneAndBib') ->answers([$this->profil_jeunesse]) ->getWrapper(); ZendAfi_Auth::getInstance()->getIdentity()->ROLE_LEVEL = 7; $this->dispatch('/admin/profil/accueil/id_profil/7', true); } /** @test **/ public function useParentCssCheckBoxShouldBeUncheked() { $this->assertXPath('//input[@name="use_parent_css"][contains(@value, 0)]'); } } class Admin_ProfilControllerPageAccueilJeunesseWithPageCssNouveauteTest extends Admin_ProfilControllerPageAccueilJeunesseTestCase { protected $_file_writer; public function setUp() { parent::setup(); $this->_file_writer = Storm_Test_ObjectWrapper::mock(); Class_Profil::setFileWriter($this->_file_writer); $this->profil_jeunesse->setPageCss('/nouveaute.css'); $this->profil_wrapper = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Profil') ->whenCalled('save') ->answers(true) ->getWrapper() ->whenCalled('findAllByZoneAndBib') ->answers([$this->profil_jeunesse]) ->getWrapper(); $this->_file_writer ->whenCalled('fileExists') ->answers(true); ZendAfi_Auth::getInstance()->getIdentity()->ROLE_LEVEL = 7; $this->dispatch('/admin/profil/accueil/id_profil/7', true); } /** @test **/ public function pageCssShoudBeNouveauCss() { $this->assertXPath('//input[@name="page_css"][contains(@value, "nouveaute.css")]',$this->_response->getBody()); } } ?>