<?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 'AbstractControllerTestCase.php'; abstract class ProfilOptionsControllerWithProfilAdulteTestCase extends AbstractControllerTestCase { protected function _loginHook($account) { $account->ROLE = ""; $account->ROLE_LEVEL = 0; $account->ID_USER = ""; $account->PSEUDO = ""; } public function setUp() { parent::setUp(); Class_AdminVar::newInstanceWithId('MENU_BOITE', ['valeur' => 1]); Class_Systeme_ModulesMenu::reset(); $cfg_menus = ['H' => ['libelle' => 'Menu horizontal', 'picto' => 'vide.gif', 'menus' => [['type_menu' => 'MENU', 'libelle' => 'Pratique', 'picto' => 'bookmark.png', 'preferences' => [], 'sous_menus' => [['type_menu' => 'ACCUEIL', 'libelle' => 'Accueil', 'picto' => 'vide.gif', 'preferences' => [], 'sous_menus' => ''], ['type_menu' => Class_Systeme_ModulesMenu::MODULE_ACCUEIL_PREFIX.'CRITIQUES', 'libelle' => 'Critiques', 'picto' => 'vide.gif', 'preferences' => ['rss_avis' => '1', 'id_panier' => 3]]]], ['type_menu' => 'URL', 'libelle' => 'Google', 'picto' => 'vide.gif', 'preferences' => ['url' => 'http://www.google.com', 'target' => 0]], ['type_menu' => 'NEWS', 'libelle' => 'Articles', 'picto' => 'vide.gif', 'preferences' => ['id_items' => '1-3', 'display_order' => 'Selection']], ['type_menu' => 'FORM_CONTACT', 'libelle' => 'Formulaire contact', 'picto' => 'vide.gif' ], ['type_menu' => 'PANIER', 'libelle' => 'Paniers de notices', 'picto' => 'vide.gif' ], ['type_menu' => 'SITO', 'libelle' => 'Sitothèque', 'preferences' => ['id_items' => '10-1-2'], 'picto' => 'vide.gif' ], ['type_menu' => Class_Systeme_ModulesMenu::MODULE_ACCUEIL_PREFIX.'CALENDAR', 'libelle' => 'Calendrier', 'picto' => 'vide.gif', 'preferences' => ['nb_events' => 5, 'display_cat_select' => true]], ['type_menu' => Class_Systeme_ModulesMenu::MODULE_ACCUEIL_PREFIX.'KIOSQUE', 'libelle' => 'Kiosque', 'picto' => 'vide.gif', 'preferences' => ['id_panier' => 1, 'style_liste' => 'mur', 'titre' => 'Nouveautés']], ['type_menu' => 'CATALOGUE', 'libelle' => 'mon catalogue', 'preferences' => ['id_catalogue' => '2', 'tri' => 1, 'titre' => 'mon catalogue'], 'picto' => 'vide.gif' ], ['type_menu' => 'CONNECT', 'libelle' => 'Connexion', 'preferences' => [], 'picto' => 'vide.gif' ], ] ], 'V' => ['libelle' => 'Menu vertical', 'picto' => 'vide.gif']]; $this->profil_adulte = Class_Profil::getCurrentProfil() ->setBrowser('opac') ->setLibelle('Profil Adulte') ->setHauteurBanniere(150) ->setCouleurTexteBandeau('#F2C') ->setCouleurLienBandeau('#234') ->setMenuHautOn(true) ->setCfgMenus($cfg_menus) ->setCommentaire('Super bib') ->setRefTags('bib,Adulte'); } } class ProfilOptionsControllerProfilAdulteWithCacheTest extends ProfilOptionsControllerWithProfilAdulteTestCase { public function setUp(){ parent::setUp(); Class_AdminVar::newInstanceWithId('AFFICHER_DISPONIBILITE_SUR_RECHERCHE', ['valeur'=>1] ); Class_AdminVar::newInstanceWithId('CACHE_ACTIF', ['valeur'=>1] ); $this->dispatch('/'); $this->bootstrap(); Class_ScriptLoader::resetInstance(); $this->dispatch('/'); } /** @test */ public function menuHorizontalAccueilShouldNotContainsEmptyUL() { $this->assertNotXPath('//li[@class="menu"]//a[text()="Accueil"][following-sibling::ul]', $this->_response->getBody()); } /** @test */ public function scriptListeNoticeMurJsShouldBeLoaded() { $this->assertXPath('//script[contains(@src, "liste_notices_mur.js")]'); } /** @test */ public function scriptSubModalJsShouldBeLoaded() { $this->assertXPath('//script[contains(@src, "subModal.js")]'); } /** @test */ public function scriptWithOpenDialogShouldBeLoaded() { $this->assertXPath('//script[contains(@src,"lien_reserver.js")]'); } /** @test */ public function scriptShouldContainsDisponibiliteAjaxBaseUrl() { $this->assertXPathContentContains('//script', 'disponibiliteAjaxBaseUrl'); } /** @test */ public function withOutOptionAfficherDisponibiliteSurRechercheScriptShouldNotContainsDisponibiliteAjaxBaseUrl(){ Class_AdminVar::newInstanceWithId('AFFICHER_DISPONIBILITE_SUR_RECHERCHE', ['valeur'=>0] ); $this->bootstrap(); Class_ScriptLoader::resetInstance(); $this->dispatch('/'); $this->assertNotXPathContentContains('//script', 'disponibiliteAjaxBaseUrl='); } } class ProfilOptionsControllerTwitterLinkWithProfilAdulteTest extends ProfilOptionsControllerWithProfilAdulteTestCase { protected $_mock_web_client; public function setUp() { parent::setUp(); $this->_mock_web_client = Storm_Test_ObjectWrapper::on(new Class_WebService_SimpleWebClient()); Class_WebService_ReseauxSociaux::setDefaultWebClient($this->_mock_web_client); $this->_mock_web_client ->whenCalled('open_url') ->answers('http://is.gd/PkdNgD'); } public function tearDown() { Class_WebService_ReseauxSociaux::resetDefaultWebClient(); parent::tearDown(); } /** @test */ public function twitterLinkShouldReturnJavascriptForTweet() { $this->dispatch('/opac/index/share/on/twitter/titre/Profil+Adulte?url='.urlencode('http://localhost'.BASE_URL.'/index/index'), true); $this->assertContains("window.open('http://twitter.com/share?url=http%3A%2F%2Fis.gd%2FPkdNgD&text=Profil+Adulte&counturl=http%3A%2F%2Fis.gd%2FPkdNgD','_blank','toolbar=0,status=0,width=800, height=410');", $this->_response->getBody()); } /** @test */ public function facebookLinkShouldReturnJavascriptForTweet() { $this->dispatch('/opac/index/share/on/facebook/titre/Profil+Adulte?url='.urlencode('/index/index'), true); $this->assertContains("window.open('https://www.facebook.com/sharer/sharer.php?m2w&s=100&p%5Btitle%5D=Profil+Adulte&p%5Burl%5D=http%3A%2F%2Fis.gd%2FPkdNgD','_blank','toolbar=0,status=0,width=800, height=410');", $this->_response->getBody()); } } class ProfilOptionsControllerProfilAdulteTest extends ProfilOptionsControllerWithProfilAdulteTestCase { /** @test */ public function titleShouldBeProfilAdulteSeConnecterInAuth() { $this->dispatch('/opac/auth/login'); $this->assertQueryContentContains('head title', 'Profil Adulte - Se connecter'); } /** @test */ public function autocompleteShouldBeAuth() { $this->profil_adulte->setCfgModules(['auth' => ['login' => ['autocomplete_off' => 0]]]); $this->dispatch('/opac/auth/login'); $this->assertXPath('//form[@class="login form"][@autocomplete="on"]'); } /** @test */ public function getHauteurBanniereShouldReturn150() { $this->assertEquals(150, $this->profil_adulte->getHauteurBanniere()); } /** @test */ public function cfgSiteShouldIncludeHauteurBanniere() { $cfg_site = $this->profil_adulte->getCfgSiteAsArray(); $this->assertEquals(150, $cfg_site['hauteur_banniere']); } /** @test */ public function PATH_JAVAShouldExists() { $this->assertTrue(file_exists(PATH_JAVA)); } /** @test */ function withSiteDownShouldDisplaySiteBloque() { Class_AdminVar::getLoader() ->newInstanceWithId('SITE_OK') ->setValeur('0'); $this->dispatch('/opac/'); $this->assertXPathContentContains('//div', 'accès au site est momentanément bloqué'); } } class ProfilOptionsControllerViewProfilAdulteTest extends ProfilOptionsControllerWithProfilAdulteTestCase { public function setUp() { parent::setUp(); $this->dispatch('/opac/'); } /** @test */ public function titleShouldBeProfilAdulteInHomePage() { $this->assertQueryContentContains('head title', 'Profil Adulte'); } /** @test */ public function metaDescriptionShouldBeSuperBibInHomePage() { $this->assertXPath("//meta[@name='description'][contains(@content,'Super bib')]"); } /** @test */ public function metaKeywordsShouldBeBibAndAdulteInHomePage() { $this->assertXPath("//meta[@name='keywords'][@content='bib,Adulte']"); } /** @test */ public function profilCssShouldBeIncludedInHeader() { $this->assertXPath("//style[@id='profil_stylesheet']"); } /** @test */ public function hauteurBanniere150ShouldBeInProfilCss() { $this->assertXPathContentContains("//style[@id='profil_stylesheet']", "div#banniere, div#header{height:150px}"); } /** @test */ public function headerTextColorShouldBeSharpF2C() { $this->assertXPathContentContains("//style[@id='profil_stylesheet']", "div#header * {color:#F2C}"); } /** @test */ public function headerLinkColorShouldBeSharp234() { $this->assertXPathContentContains("//style[@id='profil_stylesheet']", "div#header a, div#header a:visited {color:#234}"); } /** @test */ public function menuHorizontalShouldIncludeExternalLinkToGoogle() { $this->assertXPathContentContains("//div[@id='menu_horizontal']//li//a[@href='http://www.google.com'][@target='_blank']", 'Google'); } /** @test */ public function menuHorizontalShouldIncludeLinkToArticleCms() { $this->assertXPathContentContains("//div[@id='menu_horizontal']//li//a[contains(@href, 'cms/articleviewpreferences?id_items=1-3&nb_aff=5&nb_analyse=10&display_order=Selection')]", 'Articles'); } /** @test */ public function menuHorizontalShouldIncludeLinkToFormulaireContact() { $this->assertXPathContentContains("//div[@id='menu_horizontal']//li[@class='menu']//a[contains(@href, '/index/formulairecontact')]", 'Formulaire contact'); } /** @test */ public function menuHorizontalShouldIncludeLinkToPanierNotices() { $this->assertXPathContentContains("//div[@id='menu_horizontal']//li[@class='menu']//a[contains(@href, '/panier')]", 'Paniers de notices'); } /** @test */ public function menuHorizontalShouldDisplayBoiteCalendrier() { $this->assertXPath('//div[@id="menu_horizontal"]//li[@class="menu boite"]//div[@class="boite calendar"]//td[@class="calendar_title_month"]/a'); } /** @test */ public function menuHorizontalShouldDisplayBoiteCritiquesInSubMenu() { $this->assertXPath('//div[@id="menu_horizontal"]//li[@class="menu"]//li[@class="boite"]//div[@class="boite critiques"]'); } /** @test */ public function menuHorizontalShouldDisplaySitothequeWithUrl() { $this->assertXPath('//div[@id="menu_horizontal"]//li[@class="menu"]//a[contains(@href, "/sito/sitoview?id_categorie=&id_items=10-1-2&nb=10&titre=&picto=vide.gif&libelle=Sitoth%C3%A8que")]'); } /** @test */ public function menuHorizontalShouldDisplayConnexionWithUrl() { $this->assertXPath('//div[@id="menu_horizontal"]//li[@class="menu"]//a[contains(@href, "/auth/login/")]'); } /** @test */ public function menuHorizontalShouldDisplayCatalogueWithUrl() { $this->assertXPath('//div[@id="menu_horizontal"]//li[@class="menu"]//a[contains(@href, "/recherche/simple/titre/mon+catalogue/nb_notices/20/aleatoire/1/tri/date_creation+desc/nb_analyse/50/boite//id_catalogue/2/picto/vide.gif/libelle/mon+catalogue")]'); } /** @test */ function faviconShouldNotBeSet() { $this->assertNotXPath('//link[@rel="shortcut icon"]'); } /** @test */ public function logoGaucheShouldNotBeSet() { $this->assertNotXPath("//div[@class='logo_gauche']"); } /** @test */ public function logoDroiteShouldNotBeSet() { $this->assertNotXPath("//div[@class='logo_droite']"); } /** @test */ function cycleBanniereScriptsShouldNotBeIncluded() { $this->assertNotXPathContentContains('//script', '$("#banniere a").cycle'); } /** @test */ public function pageShouldIncludeNuageCss() { $this->assertXPath('//link[contains(@href, "nuage_tags.css")]'); } /** * @group integration * @test */ public function pageShouldBeHtml5Valid() { $this->assertHTML5($this->_response->getBody()); } } abstract class ProfilOptionsControllerProfilAdulteAsAdminTestCase extends ProfilOptionsControllerWithProfilAdulteTestCase { public function setUp() { parent::setUp(); Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Profil') ->whenCalled('save') ->answers(true); $admin = Class_Users::newInstanceWithId(34, ['login' => 'admin'])->beAdminPortail(); ZendAfi_Auth::getInstance()->logUser($admin); } } class ProfilOptionsControllerViewProfilAdulteAsAdminTest extends ProfilOptionsControllerProfilAdulteAsAdminTestCase { public function setUp() { parent::setUp(); $this->dispatch('/opac/'); } /** @test */ public function menuHorizontalCalendrierConfigShouldContainsConfigTypeMenu() { $this->assertXPath('//div[@id="menu_horizontal"]//li[@class="menu boite"]//div[@class="boite calendar"]//img[contains(@onclick, "menus/calendrier?config=menu&id_profil=2&id_module=8&type_menu=MODULE_ACCUEIL_CALENDAR&preferences=nb_events%3D5")]'); } /** @test */ public function menuHorizontalCritiquesConfigShouldContainsConfigTypeMenu() { $this->assertXPath('//div[@id="menu_horizontal"]//li[@class="boite"]//div[@class="boite critiques"]//img[contains(@onclick, "menus/critiques?config=menu&id_profil=2&id_module=2&type_menu=MODULE_ACCUEIL_CRITIQUES&preferences=rss_avis%3D1%7Cid_panier%3D3")]'); } /** @test */ public function menuHorizontalKiosqueConfigShouldContainsConfigTypeMenu() { $this->assertXPath('//div[@id="menu_horizontal"]//li[@class="menu boite"]//div[@class="boite kiosque"]//img[contains(@onclick, "menus/kiosque?config=menu&id_profil=2&id_module=9&type_menu=MODULE_ACCUEIL_KIOSQUE&preferences=id_panier%3D1%7Cstyle_liste%3Dmur")]'); } } class ProfilOptionsControllerProfilAdulteAsAdminPostConfigCalendrierTest extends ProfilOptionsControllerProfilAdulteAsAdminTestCase { public function setUp() { parent::setUp(); $this->postDispatch('/admin/menus/calendrier?config=menu&id_profil=2&id_module=8&type_menu=MODULE_ACCUEIL_CALENDAR&preferences=nb_events%3D5', ['nb_events' => 12, 'libelle' => 'Agenda']); } /** @test */ public function savedMenuCalendrierShouldHaveNbEvents12() { $preferences = $this->profil_adulte->getMenuHorizontal()->getMenuPrefencesByIdModule(8); $this->assertEquals(12, $preferences['nb_events']); } /** @test */ public function profilShouldBeSaved() { $this->assertTrue(Class_Profil::methodHasBeenCalled('save')); } } class ProfilOptionsControllerProfilAdulteAsAdminPostConfigKiosqueStyleReloadTest extends ProfilOptionsControllerProfilAdulteAsAdminTestCase { public function setUp() { parent::setUp(); $this->postDispatch('/admin/menus/kiosque/styles_reload/1?config=menu&id_profil=2&id_module=9&type_menu=MODULE_ACCUEIL_KIOSQUE&preferences=id_panier%3D1%7Cstyle_liste%3Dmur', ['style_liste' => 'vignettes', 'nb_notices' => 2, 'nb_analyse' => 2, 'id_panier' => 0, 'rss_avis' => 0, 'titre' => 'Nouveautes', 'aleatoire' => 0, 'tri' => 0, 'only_img' => 0, 'id_catalogue' => 0]); } /** @test */ public function selectStyleListeShouldHaveVignettesSelected() { $this->assertXPath('//select[@name="style_liste"]//option[@value="vignettes"][@selected="selected"]'); } /** @test */ public function inputNbAnalyseShouldBeTwo() { $this->assertXPath('//input[@name="nb_analyse"][@value="2"]'); } } abstract class ProfilOptionsControllerProfilJeunesseWithPagesJeuxMusiqueTestCase extends AbstractControllerTestCase { protected function _loginHook($account) { $account->ROLE = ""; $account->ROLE_LEVEL = 0; $account->ID_USER = ""; $account->PSEUDO = ""; } public function setUp() { parent::setUp(); Storm_Test_ObjectWrapper::onLoaderOfModel('Class_CodifAnnexe') ->whenCalled('findAllBy') ->with(['invisible' => 0, 'order' => 'libelle']) ->answers([Class_CodifAnnexe::newInstanceWithId(3, ['code' => 'ARC', 'libelle' => 'Archives'])]); $cfg_accueil_jeunesse = ['modules' => ['1' => ['division' => '4', 'type_module' => 'RECH_SIMPLE', 'preferences' => ['recherche_avancee' => "on", 'select_doc' => 'on', 'select_annexe' => 'on']], '2' => ['division' => '4', 'type_module' => 'LOGIN'], '4' => ['division' => '1', 'type_module' => 'NEWS'], '45' => ['division' => '1', 'type_module' => 'CALENDAR', 'preferences' => ['display_calendar' => '0', 'mode-affichage' => 'simple']], '8' => ['division' => '2', 'type_module' => 'RESERVATIONS', 'preferences' => ['titre' => 'Mes réservations']], '9' => ['division' => '2', 'type_module' => 'PRETS', 'preferences' => ['titre' => 'Mes documents']], '10' => ['division' => '1', 'type_module' => 'NEWSLETTERS', 'preferences' => ['titre' => 'Lettres d\'informations']], '11' => ['division' => '2', 'type_module' => 'MULTIMEDIA', 'preferences' => ['titre' => 'Postes multimédia']], '12' => ['division' => '2', 'type_module' => 'KIOSQUE', 'preferences' => ['style_liste' => 'vignettes']], '18' => ['division' => '1', 'type_module' => 'PANIER', 'preferences' => ['titre' => 'Mes Paniers']], '19' => ['division' => '5', 'type_module' => 'PANIER', 'preferences' => ['titre' => 'Mes Paniers flottants']] ], 'options' => []]; $this->profil_jeunesse = Class_Profil::getCurrentProfil() ->setBrowser('opac') ->setTitreSite(null) ->setLibelle('Profil Jeunesse') ->setCfgAccueil($cfg_accueil_jeunesse) ->setFavicon('afi-opac3/userfiles/favicon.ico') ->setHeaderCss('afi-opac3/userfiles/jeunesse.css') ->setHeaderJs('afi-opac3/userfiles/jeunesse.js') ->setLogoGaucheImg('/userfiles/mabib.png') ->setLogoGaucheLink('http://mabib.fr') ->setLogoDroiteImg('/userfiles/macommune.png') ->setLogoDroiteLink('http://macommune.fr') ->setHeaderImgCycle(true); $cfg_accueil_jeux = ['modules' => ['4' => ['division' => '1', 'type_module' => 'CRITIQUES'], '7' => ['division' => '1', 'type_module' => 'KIOSQUE', 'preferences' => ['style_liste' => 'cube', 'op_hauteur_img' => 90]], '8' => ['division' => '1', 'type_module' => 'RSS'], '10' => ['division' => '2', 'type_module' => 'SITO'], '12' => ['division' => '2', 'type_module' => 'KIOSQUE', 'preferences' => ['style_liste' => 'vignettes']], '13' => ['division' => '2', 'type_module' => 'KIOSQUE', 'preferences' => ['style_liste' => 'mur']]], 'options' => []]; $this->page_jeux = Class_Profil::newInstanceWithId(12) ->setParentId($this->profil_jeunesse->getId()) ->setLibelle('Jeux') ->setCfgAccueil($cfg_accueil_jeux); $this->page_musique = Class_Profil::newInstanceWithId(23) ->setParentId($this->profil_jeunesse->getId()) ->setLibelle('Musique'); $_SERVER["REQUEST_URI"] = '/'; Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Newsletter') ->whenCalled('count')->answers(5) ->whenCalled('findAll')->answers([Class_Newsletter::newInstanceWithId(23, ['titre' => 'Nouveautés'])]); } } class ProfilOptionsControllerProfilJeunesseAndJeuxTest extends ProfilOptionsControllerProfilJeunesseWithPagesJeuxMusiqueTestCase { /** @test */ function boiteActionForModuleIdOneShouldDisplayBoiteRecherche() { $this->dispatch('/opac/index/embed_module/id_profil/2/id_module/1', true); $this->assertXPath('//div[@class="recherche_avancee"]//a[contains(@href, "avancee")]'); } /** @test */ public function titleShouldBeProfilJeunesseSeConnecterInAuth() { $this->dispatch('/opac/auth/login'); $this->assertQueryContentContains('head title', 'Profil Jeunesse - Se connecter'); } /** @test **/ public function titleBoitePanierShouldLinkToPanierIndex() { ZendAfi_Auth::getInstance()->logUser(Class_Users::newInstanceWithId(34, ['login' => 'admin'])->beAdminPortail()); $this->dispatch('/opac'); $this->assertXPath('//div[contains(@class,"panier")]//h1/a[contains(@href,"/panier")]',$this->_response->getBody()); } /** @test **/ public function titleBoitePanierShouldNotLinkToAbonne() { ZendAfi_Auth::getInstance()->logUser(Class_Users::newInstanceWithId(34, ['login' => 'admin'])->beAdminPortail()); $this->dispatch('/opac'); $this->assertNotXPath('//div[contains(@class,"panier")]//h1/a[contains(@href,"/abonne")]'); } /** @test **/ public function boitePanierFlottantShouldBePresentOnAccueil() { ZendAfi_Auth::getInstance()->logUser(Class_Users::newInstanceWithId(34, ['login' => 'admin'])->beAdminPortail()); $this->dispatch('/opac'); $this->assertXPathContentContains('//div[contains(@class,"panier")]','Mes Paniers flottants',$this->_response->getBody()); } /** @test **/ public function boitePanierFlottantShouldBePresentOnRecherche() { ZendAfi_Auth::getInstance()->logUser(Class_Users::newInstanceWithId(34, ['login' => 'admin'])->beAdminPortail()); $this->dispatch('/opac/recherche/simple'); $this->assertXPathContentContains('//div[contains(@class,"panier")]','Mes Paniers flottants',$this->_response->getBody()); } /** @test **/ public function divisionFlottantShouldContainsClassColFlottant() { ZendAfi_Auth::getInstance()->logUser(Class_Users::newInstanceWithId(34, ['login' => 'admin'])->beAdminPortail()); $this->dispatch('/opac'); $this->assertXPath('//div[contains(@class,"colFlottant")]',$this->_response->getBody()); } } class ProfilOptionsControllerPageJeuxViewModuleCritiquesTest extends ProfilOptionsControllerProfilJeunesseWithPagesJeuxMusiqueTestCase { public function setUp() { parent::setUp(); $this->dispatch('/opac/blog/viewcritiques?id_module=4&id_profil=12'); } /** @test */ public function iframeKiosqueUrlShouldHaveIdModuleSeven() { $this->assertXPath('//iframe[contains(@src, "/id_module/7/id_profil/12/vue/cube")]', $this->_response->getBody()); } /** @test */ public function linkAccesProShouldLinkToAdminModuleWithUrlReset() { $this->assertXPathContentContains('//a[@href="/admin"]', 'Accès pro.'); } } class ProfilOptionsControllerProfilJeunesseViewPageJeuxTest extends ProfilOptionsControllerProfilJeunesseWithPagesJeuxMusiqueTestCase { public function setUp() { parent::setUp(); $this->dispatch('/opac/index/index/clef/zork?id_profil=12', true); } /** @test */ public function bodyClassShouldBeIndexIndexProfil12() { $this->assertXPath('//body[@class="index_index profil_12"]'); } /** @test */ public function titleShouldBeJeuxForPageJeux() { $this->assertQueryContentContains('head title', 'Jeux'); } /** @test */ public function boiteLoginShouldBeVisibleInPageJeux() { $this->assertXPath("//div[@id='boite_login']"); } /** @test */ public function boiteLoginShouldHaveAutocompleteSetToOff() { $this->assertXPath("//div[@id='boite_login']//form[@autocomplete='off']"); } /** @test */ public function boiteNewsShouldNotBeVisibleInPageJeux() { $this->assertNotXPathContentContains("//a[contains(@href, 'articleviewselection')]",'Articles'); } /** @test */ public function boiteKiosqueCubeShouldBeVisibleInPageJeux() { $this->assertXPath("//iframe[contains(@src, 'kiosque')]"); } /** @test */ public function boiteKiosqueStyleMurShouldBeVisibleInPageJeux() { $this->assertXPath("//div[@class='boite kiosque']//div[@class='liste_mur']"); } /** @test */ public function boiteKiosqueStyleVignettesShouldBeVisibleInPageJeux() { $this->assertXPath("//div[@class='boite kiosque']//div[@class='liste_vignettes']"); } /** @test */ public function boiteKiosqueTitleShouldLinkToMenuCatalogue() { $this->assertXPath("//div[@class='boite kiosque']//div//a[contains(@href, 'recherche/simple/titre/Kiosque/style_liste/cube/nb_notices/20/only_img/1/aleatoire/1/tri/date_creation+desc/nb_analyse/50/op_hauteur_img/90/op_transition//op_largeur_img/0/rss_avis/1/id_catalogue/0/id_panier/0/boite/boite_de_la_division_gauche')]"); } } class ProfilOptionsControllerViewProfilJeunesseAccueilTest extends ProfilOptionsControllerProfilJeunesseWithPagesJeuxMusiqueTestCase { protected function _loginHook($account) {} public function setUp() { parent::setUp(); Class_AdminVar::newInstanceWithId('MULTIMEDIA_KEY',['valeur'=>'81b3ab7b0b9a621afb6044a9c2f48ed2']); Storm_Test_ObjectWrapper::onLoaderOfModel('Class_TypeDoc') ->whenCalled('findUsedTypeDocIds') ->answers([1, 2, 4]); Class_Profil::setFileWriter(Storm_Test_ObjectWrapper::mock() ->whenCalled('fileExists') ->answers(true)); $this->dispatch('/opac/', true); } public function tearDown() { Class_Profil::setFileWriter(null); parent::tearDown(); } /** @test */ public function hauteurBanniereShouldBe100() { $this->assertEquals(100, $this->profil_jeunesse->getHauteurBanniere()); } /** @test */ function faviconShouldBeSet() { $this->assertXPath('//link[@rel="shortcut icon"][@href="afi-opac3/userfiles/favicon.ico"]'); } /** @test */ function headerCssJeunesseShouldBeIncluded() { $this->assertXPath('//link[@rel="stylesheet"][@type="text/css"][contains(@href, "afi-opac3/userfiles/jeunesse.css")]'); } /** @test */ function headerJsJeunesseShouldBeIncluded() { $this->assertXPath('//script[contains(text(), "afi-opac3/userfiles/jeunesse.js")]'); } /** @test */ function rechercheAvanceLinkShouldBeVisible() { $this->assertXPath('//div[@class="recherche_avancee"]//a[contains(@href, "avancee")]'); } /** @test */ public function comboRechSimpleTypeDocShouldBeVisible() { $this->assertXPath('//form[@class="rechSimpleForm"]//select[@name="type_doc"]'); } /** @test */ public function hiddenInputShouldContainsTriPertinence() { $this->assertXPath('//form[@class="rechSimpleForm"]//input[@name="tri"][@value="*"][@type="hidden"]'); } /** @test */ public function comboRechSimpleTypeDocShouldOnlyContainsTypesOneTwoAndFour() { foreach([1,2,4] as $id) $this->assertXPath('//form[@class="rechSimpleForm"]//select[@name="type_doc"]//option[@value="'.$id.'"]'); $this->assertNotXPath('//form[@class="rechSimpleForm"]//select[@name="type_doc"]//option[@value="3"]'); } /** @test */ public function comboRechSimpleSelectAnnexeBeVisible() { $this->assertXPathContentContains('//form[@class="rechSimpleForm"]//select[@name="annexe"]//option[@value="ARC"]', 'Archives'); } /** @test */ public function titleShouldBeProfilJeunesseInHomePage() { $this->dispatch('/opac/'); $this->assertQueryContentContains('head title', 'Profil Jeunesse'); } /** @test */ public function boiteLoginShouldBeVisibleInProfilJeunesse() { $this->assertXPath("//div[@id='boite_login']"); } /** @test */ public function boiteMesPretsShouldBeVisibleInProfilJeunesse() { $this->assertXPath("//div[@class='boite_prets']"); } /** @test */ public function boiteMesReservationsShouldBeVisibleInProfilJeunesse() { $this->assertXPath("//div[@class='boite_reservations']"); } /** @test */ public function boitePosteMultimediaShouldBeVisibleInProfilJeunesse() { $this->assertXPath("//div[@class='boite_multimedia']"); } /** @test */ public function boiteNewslettersShouldBeVisibleInProfilJeunesseInColGauche() { $this->assertXPath("//div[contains(@class, 'colGauche')]//div[@class='boite_newsletters']",$this->_response->getBody()); } /** @test */ public function boiteNewsShouldBeVisibleInProfilJeunesse() { $this->assertXPathContentContains("//a[contains(@href, 'articleviewselection')]",'Articles'); } /** @test */ public function logoGaucheShouldBeInBanniere() { $this->assertXPath("//div[@id='banniere']//div[@class='logo_gauche']//a[@href='http://mabib.fr']//img[@src='/userfiles/mabib.png']", $this->_response->getBody()); } /** @test */ public function logoDroiteShouldBeInBanniere() { $this->assertXPath("//div[@id='banniere']//div[@class='logo_droite']//a[@href='http://macommune.fr']//img[@src='/userfiles/macommune.png']", $this->_response->getBody()); } /** @test */ public function hauteurBanniereShouldBe100InProfilCss() { $this->assertXPath("//style[@id='profil_stylesheet']"); $this->assertXPathContentContains("//style[@id='profil_stylesheet']", "div#banniere, div#header{height:100px}"); } /** @test */ public function headerLinkColorShouldNotBePresent() { $this->assertNotXPathContentContains("//style[@id='profil_stylesheet']", "div#header a"); } /** @test */ public function headerColorShouldNotBePresent() { $this->assertNotXPathContentContains("//style[@id='profil_stylesheet']", "div#header *"); } /** @test */ function cycleBanniereScriptsShouldBeIncluded() { $this->assertXPathContentContains('//script', '$("#banniere a.home").cycle'); } /** @test */ public function banniereClassLinkShouldBeHome() { $this->assertXPath('//div[@id="banniere"]//a[@class="home"]'); } /** @test */ public function constantPathSkinShouldBeRelative() { $this->assertTrue(0===strpos(PATH_SKIN, './')); } } class ProfilOptionsControllerProfilJeunesseWithOrdreDivisionsReversedTest extends ProfilOptionsControllerProfilJeunesseWithPagesJeuxMusiqueTestCase { protected function _loginHook($account) {} public function setUp() { parent::setUp(); $this->profil_jeunesse->setOrdreDivisions(1); $this->dispatch('/opac/', true); } /** @test */ public function boiteNewslettersShouldBeVisibleInProfilJeunesseInColDroite() { $this->assertXPath("//div[contains(@class, 'colDroite')]//div[@class='boite_newsletters']",$this->_response->getBody()); } } class UserRoleLevelThreeViewPrivateProfilTest extends AbstractControllerTestCase { protected function _loginHook($account) { $account->ROLE = ""; $account->ROLE_LEVEL = 3; $account->ID_USER = ""; $account->PSEUDO = ""; } public function setUp() { parent::setUp(); $this->private_profil = Class_Profil::getCurrentProfil() ->setBrowser('opac') ->setTitreSite(null) ->setLibelle('Profil privé'); } /** @test */ public function shouldRenderLoginPageWhenProfilAccessLevelIsFour() { $this->private_profil->setAccessLevel(4); $this->dispatch('/opac/'); $this->assertModule('admin'); $this->assertController('auth'); $this->assertAction('login'); } /** @test */ public function shouldRenderIndexPageWhenProfilAccessLevelIsThree() { $this->private_profil->setAccessLevel(3); $this->dispatch('/opac/'); $this->assertController('index'); $this->assertAction('index'); } } abstract class ProfilOptionsControllerProfilBoiteCalendarTestCase extends AbstractControllerTestCase { public function setup() { parent::setup(); Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article') ->whenCalled('getArticlesByPreferences') ->answers([Class_Article::newInstanceWithId(34, [ 'titre' => 'Fête du caion', 'description' => 'à Annecy'])]); } } class ProfilOptionsControllerProfilBoiteCalendarWithCalendarDisplayedAndModeSimpleTest extends ProfilOptionsControllerProfilBoiteCalendarTestCase { public function setup() { parent::setup(); $cfg_accueil = ['modules' => ['45' => ['division' => '1', 'type_module' => 'CALENDAR', 'preferences' => ['display_calendar' => '1', 'mode-affichage' => 'simple']]]]; $this->profil_with_calendar = Class_Profil::getCurrentProfil() ->setBrowser('opac') ->setTitreSite('Test Calendar') ->setLibelle('Profil Portail') ->setCfgAccueil($cfg_accueil); $this->dispatch('/opac'); } /** @test */ public function boiteCalendarShouldBeDisplay() { $this->assertXPath('//div[contains(@class,"calendar")]',$this->_response->getBody()); } /** @test **/ public function boiteCalendarShouldBeDisplayCalendarTable() { $this->assertXPath('//table[@class="calendar_main"]', $this->_response->getBody()); } /** @test **/ public function boiteCalendarShouldDisplayNextEventAsSimpleListe() { $this->assertXPath('//ul/li/a[@class="calendar_event_info"]', $this->_response->getBody()); } } class ProfilOptionsControllerProfilBoiteCalendarWithCalendarNotDisplayedAndModeArticleTest extends ProfilOptionsControllerProfilBoiteCalendarTestCase { public function setup() { parent::setup(); $cfg_accueil = ['modules' => ['45' => ['division' => '1', 'type_module' => 'CALENDAR', 'preferences' => ['display_calendar' => '0', 'mode-affichage' => 'article']]]]; $this->profil_with_calendar = Class_Profil::getCurrentProfil() ->setBrowser('opac') ->setTitreSite('Test Calendar') ->setLibelle('Profil Portail') ->setCfgAccueil($cfg_accueil); $this->dispatch('/opac'); } /** @test */ public function boiteCalendarShouldBeDisplay() { $this->assertXPath('//div[contains(@class,"calendar")]',$this->_response->getBody()); } /** @test **/ public function boiteCalendarShouldBeNotDisplayCalendarTable() { $this->assertNotXPath('//table[@class="calendar_main"]', $this->_response->getBody()); } /** @test **/ public function boiteCalendarShouldDisplayNextEventAsArticleListe() { $this->assertXPath('//div[contains(@class,"agenda-summaries")]', $this->_response->getBody()); } } class ProfilOptionsControllerProfilBoiteCalendarWithCalendarNotDisplayedAndDonTDisplayNextEventTest extends AbstractControllerTestCase { public function setup() { parent::setup(); $cfg_accueil = ['modules' => ['45' => ['division' => '1', 'type_module' => 'CALENDAR', 'preferences' => ['display_calendar' => '0', 'mode-affichage' => 'none']]]]; $this->profil_with_calendar = Class_Profil::getCurrentProfil() ->setBrowser('opac') ->setTitreSite('Test Calendar') ->setLibelle('Profil Portail') ->setCfgAccueil($cfg_accueil); $this->dispatch('/opac'); } /** @test */ public function boiteCalendarShouldBeDisplay() { $this->assertXPath('//div[contains(@class,"calendar")]',$this->_response->getBody()); } /** @test **/ public function boiteCalendarShouldBeNotDisplayCalendarTable() { $this->assertNotXPath('//table[@class="calendar_main"]', $this->_response->getBody()); } /** @test **/ public function boiteCalendarShouldNotDisplayNextEvent() { $this->assertNotXPath('//div[@class="calendar"]/div[2]', $this->_response->getBody()); } /** @test **/ public function boiteCalendarShouldDisplayScriptAjaxifyCalendar() { $this->assertXPathContentContains('//script','ajaxify_calendars();'); } } class ModulesAccueilControllerWithProfilJeunesse extends ProfilOptionsControllerProfilJeunesseWithPagesJeuxMusiqueTestCase { public function setup() { parent::setup(); } /** @test **/ public function renderModuleKiosqueShouldReturnBoiteKiosque(){ $this->dispatch('/opac/modules-accueil/render-module/id/12',true); $this->assertXPath('//div[@class="boite kiosque"]',$this->_response->getBody()); } } ?>