Newer
Older
<?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';
class CmsControllerRssNoProfileTest extends AbstractControllerTestCase {
public function setUp() {
parent::setUp();
Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Profil')
->whenCalled('find')
->answers(null);
$this->dispatch('cms/rss');
}
/** @test */
public function titleShouldBeFluxIndisponible() {
$this->assertXPathContentContains('//channel/title', 'Flux indisponible');
}
}
class CmsControllerCalendarRssWithProfileAndArticleTest
extends AbstractControllerTestCase {
/**
* @param Class_Profil $profil
*/
protected function _initProfilHook($profil) {
$profil->setCfgAccueil(
array(
'modules' => array(
'1' => array(
'division' => '1',
'type_module' => 'NEWS',
'preferences' => array(
'titre' => 'Les dernières nouvelles',
'rss_avis' => true,
'type_aff' => 2,
'display_order' => 'Random',
'nb_aff' => 2,
'nb_analyse' => 5
),
)
);
}
public function setUp() {
parent::setUp();
Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article')
->whenCalled('getArticlesByPreferences')
->answers(array(
Class_Article::getLoader()
->newInstanceWithId(1)
->setTitre('La fête de la banane')

Ghislain Loas
committed
->setContenu('Une fête qui glisse !<img src="'.BASE_URL.'/image/banane.jpg"/>')
->setDateMaj('2011-11-11 11:11:11'),
Class_Article::getLoader()
->newInstanceWithId(2)
->setTitre('La fête de la frite')
->setContenu('Une fête qui sent !'),
));
$this->dispatch('cms/calendarrss?id_profil=2&id_module=1');
}

Ghislain Loas
committed
/** @test */
public function imgShouldBeDisplayWithAbsoluteUrl() {
$this->assertXPathContentContains('//description', '<img src="http://localhost'.BASE_URL.'/image/banane.jpg"');
}
/** @test */
public function channelTitleShouldBeLesDernieresNouvelles() {
$this->assertXpathContentContains('//channel/title', 'Les dernières nouvelles');
}
/** @test */
public function channelDescriptionShouldBeAgendaColonLesDerniereNouvelles() {
$this->assertXpathContentContains('//channel/description', 'Agenda: Les dernières nouvelles');
}
/** @test */
public function itemsCountShouldBeTwo() {
$this->assertXpathCount('//channel/item', 2);
}
/** @test */
public function firstItemDateShouldBe11_11_2011() {
$this->assertXpathContentContains('//channel/item/pubDate', '11 Nov 2011');
}
}
class CmsControllerRssWithProfileAndArticle extends AbstractControllerTestCase {
/**
* @param Class_Profil $profil
*/
protected function _initProfilHook($profil) {
$profil->setCfgAccueil(
array(
'modules' => array(
'1' => array(
'division' => '1',
'type_module' => 'NEWS',
'preferences' => array(
'titre' => 'Les dernières nouvelles',
'rss_avis' => true,
'type_aff' => 2,
'display_order' => 'Random',
'nb_aff' => 2,
'nb_analyse' => 5
)
),
)
);
}
public function setUp() {
parent::setUp();
Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article')
->whenCalled('getArticlesByPreferences')
->answers(array(
Class_Article::getLoader()
->newInstanceWithId(1)
->setTitre('La fête de la banane')
->setContenu('Une fête qui glisse !'),
Class_Article::getLoader()
->newInstanceWithId(2)
->setTitre('La fête de la frite')
->setContenu('Une fête qui sent !'),
));
$this->dispatch('cms/rss?id_profil=2&id_module=1');
}
/** @test */
public function channelTitleShouldBeLesDernieresNouvelles() {
$this->assertXpathContentContains('//channel/title', 'Les dernières nouvelles');
}
/** @test */
public function feteDeLaBananeTitreShouldBePresent() {
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
$this->assertXpathContentContains('//channel/item[1]/title', 'La fête de la banane');
}
/** @test */
public function feteLeLaBananeDescriptionShouldBeQuiGlisse() {
$this->assertXpathContentContains("//channel/item[1]/description", 'Une fête qui glisse !');
}
/** @test */
public function feteDeLaFriteShouldBePresent() {
$this->assertXpathContentContains('//channel/item[2]/title', 'La fête de la frite');
}
/** @test */
public function feteLeLaFriteDescriptionShouldBeQuiSent() {
$this->assertXpathContentContains('//channel/item[2]/description', 'Une fête qui sent !');
}
/** @test */
public function firstLinkShouldContainsCmsArticleViewOne() {
$this->assertXpathContentContains('//channel/item[1]/link', 'http://localhost/cms/articleview/id/1');
}
/** @test */
public function secondLinkShouldContainsCmsArticleViewTwo() {
$this->assertXpathContentContains('//channel/item[2]/link', 'http://localhost/cms/articleview/id/2');
}
}
abstract class AbstractCmsControllerArticleViewByDateTest extends AbstractControllerTestCase {
protected $display_mode = "Title";
protected $display_order = "EventDebut";
public function dispatchViewByDate() {
Class_Profil::getCurrentProfil()
->setCfgAccueil(
['modules' =>
['8' => ['division' => '0',
'type_module' => 'CALENDAR',
'preferences' => ['display_mode' => $this->display_mode,
'display_order' => $this->display_order]],
'options' =>[]]]
);
Class_AdminVar::newInstanceWithId('WORKFLOW',['valeur' => '']);
$articles = [ Class_Article::getLoader()
->newInstanceWithId(1)
->setTitre('La fête de la banane')
->setDateCreation('2011-01-15')
->setContenu('Pas qu\'à moitié {FIN} Une fête qui glisse !')
->setEventsDebut('2011-09-03')
->setEventsFin('2011-10-03')
->setCategorie(
Class_ArticleCategorie::getLoader()->newInstanceWithId(1)
->setLibelle('Alimentaire')
->setBib(Class_Bib::getLoader()
->newInstanceWithId(1)
->setLibelle('Bonlieu'))),
Class_Article::getLoader()
->setTitre('La fête de la frite')
->setDateCreation('2011-01-20')
->setContenu('')
->setEventsDebut('2011-09-03')
->setEventsFin('2011-09-03')
->setCategorie(
Class_ArticleCategorie::getLoader()->newInstanceWithId(1)
->setLibelle('Alimentaire')
$articles = Class_Article::getLoader()->sortArticles($articles, $this->display_order);
$prefs_module_calendar = ['titre' => "Calendrier des animations",
'event_date' => '2011-09-03',
'id_bib' => null,
'events_only' => true,
'published' => false,
'display_next_event' => 1,
'nb_events' => 3,
'display_mode' => $this->display_mode,
'display_order' => $this->display_order,
'display_cat_select' => false,
'display_event_info'=>false,
'rss_avis' => false,
'boite' => null

llaffont
committed
if ($this->display_mode == "Summary")
$prefs_module_calendar['summary_content']="Summary";

llaffont
committed
$this->_article_loader = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article')
->whenCalled('getArticlesByPreferences')
->with($prefs_module_calendar)
->answers($articles)
->whenCalled('getArticlesByPreferences')
->with([
'event_date' => '2011-09-03',
'events_only' => true,
'published' => false,
'id_bib' => null,
'display_mode' => $this->display_mode,
'display_order' => $this->display_order
->answers($articles)
->whenCalled('getArticlesByPreferences')

llaffont
committed
$this->dispatch('/cms/articleviewbydate?d=2011-09-03&id_module=8&id_profil=2&select_id_categorie=all', true);

llaffont
committed
class CmsControllerArticleViewByDateTest extends AbstractCmsControllerArticleViewByDateTest {
public function setUp() {
parent::setUp();
$this->display_mode='Title';
$this->dispatchViewByDate();
public function feteDeLaBananeTitleShouldBePresent() {
$this->assertXpathContentContains('//ul//li//a', 'La fête de la banane');

llaffont
committed
/** @test */
public function feteDeLaBananeAnchorShouldLinkToActionViewArticleOne() {
$this->assertXpathContentContains('//ul//li//a[contains(@href, "cms/articleview/id/1")]',
'La fête de la banane');
}

llaffont
committed
/** @test */
public function dateForFeteDeLaBananeShouldBePresent() {
$this->assertXpathContentContains('//ul//li//span', 'Du 03 septembre au 03 octobre');
}

llaffont
committed
/** @test */
public function feteDeLaFriteShouldBePresent() {
$this->assertXpathContentContains('//ul//li//a', 'La fête de la frite');
}

llaffont
committed
/** @test */
public function dateForFeteDeLaFriteShouldBePresent() {
$this->assertXpathContentContains('//ul//li//span', 'Le 03 septembre');
}

llaffont
committed
/** @test */
public function bibliothequeLibelleShouldBePresent() {
$this->assertXpathContentContains('//h2', 'Bonlieu');
}

llaffont
committed
/** @test */
public function emptyBibliothequeLibelleShouldBeDisplayedAsPortail() {
$this->assertXpathContentContains('//h2', 'Portail');
}
}

llaffont
committed
class CmsControllerProfilDivisionTest extends AbstractCmsControllerArticleViewByDateTest {
public function setUp() {
parent::setUp();
$cfg_accueil_jeunesse = ['modules' => ['1' => ['division' => '4',
'type_module' => 'RECH_SIMPLE',
'preferences' => ['recherche_avancee' => "on",
'select_doc' => 'on',
'select_annexe' => 'on']],
'10' => ['division' => '3',

llaffont
committed
'type_module' => 'NEWS',
'preferences' => ['titre' => 'Articles']],
'11' => ['division' => '1',
'type_module' => 'LOGIN',
'preferences' => ['lien_connexion' => 'Par ici la connexion']],
]];
Class_Profil::getCurrentProfil()->setCfgAccueil($cfg_accueil_jeunesse);
$this->dispatch('/cms/articleviewbydate?d=2011-09-03&id_module=8&id_profil=2&select_id_categorie=all', true);
}
/** @test */

llaffont
committed
public function boiteNewsShouldNotBeDisplayed() {
$this->assertNotXPath("//div[contains(@class, 'colDroite')]//div[@class='boite news']",$this->_response->getBody());
}
/** @test */
public function boiteLoginShouldBeDisplayedAtLeft() {
$this->assertXPath("//div[contains(@class, 'colGauche')]//div[@id='boite_login']",$this->_response->getBody());
}
/** @test */

llaffont
committed
public function boiteNewsShouldBeDisplayedIfDivisionThreeVisibleSelected() {
$this->bootstrap();
Class_Profil::getCurrentProfil()->setDivisionThreeAlwaysVisible(true);
$this->dispatch('/cms/articleviewbydate?d=2011-09-03&id_module=8&id_profil=2&select_id_categorie=all', true);

llaffont
committed
$this->assertXPath("//div[contains(@class, 'colDroite')]//div[@class='boite news']");
}
/** @test */
public function boiteLoginShouldBeDisplayedAtRightWhenReverseOrder() {

llaffont
committed
$this->bootstrap();
Class_Profil::getCurrentProfil()->setOrdreDivisions(1);
$this->dispatch('/cms/articleviewbydate?d=2011-09-03&id_module=8&id_profil=2&select_id_categorie=all', true);

llaffont
committed
$this->assertXPath("//div[contains(@class, 'colDroite')]//div[@class='boite login']",$this->_response->getBody());
/** @test */

llaffont
committed
public function boiteNewsShouldNotBeDisplayedWhenReverseOrder() {
$this->bootstrap();
Class_Profil::getCurrentProfil()->setOrdreDivisions(1);
$this->dispatch('/cms/articleviewbydate?d=2011-09-03&id_module=8&id_profil=2&select_id_categorie=all', true);

llaffont
committed
$this->assertNotXPath("//div[contains(@class, 'colGauche')]//div[@class='boite news']",$this->_response->getBody());
}
/** @test */

llaffont
committed
public function boiteNewsShouldBeDisplayedWhenReverseOrderAndDivisionThreeVisibleSelected() {
$this->bootstrap();
Class_Profil::getCurrentProfil()
->setOrdreDivisions(1)
->setDivisionThreeAlwaysVisible(true);
$this->dispatch('/cms/articleviewbydate?d=2011-09-03&id_module=8&id_profil=2&select_id_categorie=all', true);

llaffont
committed
$this->assertXPath("//div[contains(@class, 'colGauche')]//div[@class='boite news']",$this->_response->getBody());
}
}
class CmsControllerCalendarDisplayOrderTest extends AbstractCmsControllerArticleViewByDateTest {
public function setUp() {
$this->display_mode = 'Title';
$this->display_order = 'DateCreationDesc';
}
/** @test */
public function feteDeLaBananeArticleShouldBeTheFirstArticle() {
$this->assertXpathContentContains('//div/ul/li/ul/li[1]/span/a','La fête de la frite');

llaffont
committed

llaffont
committed
class CmsControllerArticleViewByDateWithOnlyArticlePortailTest extends AbstractControllerTestCase {
protected $_article_loader;
public function setUp() {
parent::setUp();
$this->_article_loader = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article')
->whenCalled('getArticlesByPreferences')
->answers([Class_Article::newInstanceWithId(1,
['titre' => 'La fête de la frite',
'content' => '',
'events_debut' => '2011-09-03',
'events_fin' => '2011-09-03',
'categorie' => Class_ArticleCategorie::newInstanceWithId(1,
['libelle' => 'Alimentaire'])])

llaffont
committed
]);
$this->dispatch('/cms/articleviewbydate?d=2011-09-03&id_module=8&id_profil=2&select_id_categorie=all', true);
}
/** @test */
public function emptyBibliothequeLibelleShouldNotBeDisplayedAsPortail() {
$this->assertNotXpathContentContains('//h2', 'Portail');

llaffont
committed
}
/** @test */
public function titreBoiteShouldBeCalendrier() {
$this->assertXPathContentContains('//div[@class="titre"]', 'Calendrier');
}

llaffont
committed
}
class CmsControllerArticleViewByDateCategorie23AndNoProfilParamTest extends AbstractControllerTestCase {
protected $_article_loader;
public function setUp() {
parent::setUp();
Class_Profil::getCurrentProfil()
->setCfgModules(['cms' => ['articleviewbydate' => ['titre' => 'Agenda de la bib']]]);
$this->_article_loader = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article')
->whenCalled('getArticlesByPreferences')
->answers(array())
->getWrapper();
$this->dispatch('/cms/articleviewbydate?d=2011-09-03&id_module=8&select_id_categorie=23', true);
}
/** @test */
function byPeferencesParamShouldContainsIdCategorie23() {
$prefs = $this->_article_loader->getFirstAttributeForLastCallOn('getArticlesByPreferences');
$this->assertEquals(23, $prefs['id_categorie']);
}
/** @test */
function contenuShouldContainsAucunContenu() {
$this->assertXPathContentContains('//div', 'Aucun contenu');
/** @test */
public function titreBoiteShouldBeAgendaDeLaBib() {
$this->assertXPathContentContains('//div[@class="titre"]', 'Agenda de la bib');
}

llaffont
committed
class CmsControllerArticleViewByDateWitoutEventDateTest extends AbstractControllerTestCase {
protected $_article_loader;
public function setUp() {
Class_AdminVar::set('WORKFLOW','');

llaffont
committed
parent::setUp();
$this->_article_loader = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article')
->whenCalled('getArticlesByPreferences')
'event_date' => null,
'id_bib' => null,
'events_only' => true,
'published' => true,
'display_mode' => 'Title'])

llaffont
committed
->answers([Class_Article::newInstanceWithId(1)
->setTitre('Corrige le clic sur le bandeau de la boite calendrier qui affichait les articles non publiés')
->setCategorie(Class_ArticleCategorie::getLoader()->newInstanceWithId(1)
->setLibelle('Bugs')
->setBib(Class_Bib::newInstanceWithId(1)->setLibelle('Annecy')))
]);

llaffont
committed
$this->dispatch('/cms/articleviewbydate/id_module/8/id_profil/2');
}
/** @test */
public function articleCorrigeCalendirerShouldBePresent() {
$this->assertXpathContentContains('//ul//li//a', 'Corrige le clic');

llaffont
committed
}
}
class CmsControllerArticleViewByDateWithRadioSummarySelectedTest extends AbstractCmsControllerArticleViewByDateTest {
protected $_article_loader;
public function setUp() {
$this->display_mode="Summary";
Class_AdminVar::newInstanceWithId('ID_READ_SPEAKER', ['valeur' => '1234']);
/** @test */
public function articleSummaryLaFeteDeLaBananeShouldBePresent() {
$this->assertXpathContentContains('//div[@class="titre"]//h1//a[contains(@href, "/cms/articleview/id/1")]',
'La fête de la banane');
}
/** @test */
public function articleTextLaFeteDeLaBananeShouldContainsSummary() {
$this->assertXpathContentContains('//article/div[@class="article_content"]', 'Pas qu\'à moitié');
/** @test */
public function articleTextLaFeteDeLaBananeShouldNotContainsFullArticle() {
$this->assertNotXpathContentContains('//article', ' Une fête qui glisse !');
/** @test */
public function speakStartMarkerShouldBePresent() {
$this->assertXpathContentContains('//article[@class="auto_resize article"]', '<!-- RSPEAK_START -->');
}
/** @test */
public function speakStopMarkerShouldBePresent() {
$this->assertXpathContentContains('//article[@class="auto_resize article"]', '<!-- RSPEAK_STOP -->');
}
/** @test **/
public function headerShouldBePresent() {
$this->assertXPath('//article/header');
}
/** @test **/
public function pContentShouldBePresent() {
$this->assertXPath('//article/div[@class="article_content"]');
}
/** @test **/
public function fotterShouldBePresent() {
$this->assertXPath('//article/footer');
}
/** @test */
public function readSpeakerLinkShouldBePresent() {
$this->assertXPath('//a[@class="readspeaker"][contains(@onclick, "/cms/articleread?id=1")]',
$this->_response->getBody());
}
/** @test */
public function linkLireArticleCompleShouldBePresent() {
$this->assertXPathContentContains('//a[contains(@href, "/cms/articleview/id/1")]',
"Lire l'article complet");
}
class CmsControllerArticleViewByDateWithRadioFullArticleSelectedTest extends AbstractCmsControllerArticleViewByDateTest {
protected $_article_loader;
public function setUp() {
parent::setUp();
$this->display_mode="FullArticle";
$this->dispatchViewByDate();
}
/** @test */
public function articleFullTextResumeLaFeteDeLaBananeShouldContainsLaFeteDeLaBanane() {
$this->assertXpathContentContains('//h1', 'La fête de la banane');
}
public function articleFullTextLaFeteDeLaBananeShouldContainsUneFeteQuiGlisse() {
$this->assertXpathContentContains('//div', 'Une fête qui glisse !');
}

llaffont
committed
abstract class CmsControllerWithFeteDeLaFriteTestCase extends AbstractControllerTestCase {
public function setUp() {
parent::setUp();
Class_AdminVar::newInstanceWithId('MODO_AVIS_BIBLIO')
->setValeur(0);
->setValeur(0);
$bonlieu = $this->fixture('Class_Bib', ['id' => 1,
'libelle' => 'Bonlieu']);
$annecy = $this->fixture('Class_Lieu',
['id' => '4156465',
'libelle' => 'Annecy',
'adresse' => 'Rue des tomates',
'code_postal' => '74000']);
$alimentaire = $this->fixture ( 'Class_ArticleCategorie', ['id' => 1,
'libelle' => 'Alimentaire',
'bib' => $bonlieu ]);
$avis_mimi = $this->fixture('Class_Avis' , ['id' => 34,
'auteur' => $this->fixture('Class_Users' , ['id'=> 98,
'pseudo' => 'Mimi',
'password' => 'toto',
'login' => 'mimi']),
'date_avis' => '2012-02-05',
'note'=>4,
'entete' => "Hmmm",
'avis'=> 'ça a l\'air bon'
]);
$avis_mimi->beWrittenByAbonne();
$avis_florence = $this->fixture('Class_Avis' ,
['id' => 35,
'auteur' => $this->fixture('Class_Users' ,
['id'=> 123,
'pseudo' => 'Florence',
'password' => 'toto',
'login' => 'florence']),
'date_avis' => '2012-02-05',
'note'=>2,
'entete' => "Argg",
'avis'=> 'ça ne me tente pas']);
$avis_florence->beWrittenByBibliothecaire();
$avis_anonyme = $this->fixture('Class_Avis' ,
['id' => 38,
'auteur' => null,
'date_avis' => '2012-02-05',
'note'=>2,
'entete' => "Anonyme",
'avis'=> 'vous ne savez pas qui je suis']);
$avis_anonyme->beWrittenByBibliothecaire();
$article= $this->fixture('Class_Article',
['id' =>224,
'titre' => 'La fête de la frite',
'contenu' => '<div>Une fête appétissante</div>',
'events_debut' => '2011-09-03 12:00',
'events_fin' => '2011-10-05 16:00',
'tags' => 'Tout public;Concert',
'lieu' => $annecy,
'categorie' =>$alimentaire,
'avis' => 1,
'avis_users' => [$avis_mimi,$avis_florence,$avis_anonyme]]);
$article_en = $this->fixture('Class_Article',
['id' => 2241,
'langue' => 'en',
'parent_id' => 224,
'titre' => 'Feast of fried',
'contenu' => '<div>an appetizing feast</div>']);
$this->fixture('Class_CmsRank',['id' => 987,
'article' => $article]);
class CmsControllerArticleViewTest extends CmsControllerWithFeteDeLaFriteTestCase {
protected function _loginHook($account) {
$account->ROLE_LEVEL = ZendAfi_Acl_AdminControllerRoles::ABONNE_SIGB;
$account->PSEUDO = "admin";
}
public function setUp() {
parent::setUp();
Class_AdminVar::newInstanceWithId('ID_READ_SPEAKER', ['valeur' => '1234']);
$this->dispatch('/cms/articleview/id/224', true);
public function pageArticleviewBarreNavShouldBeFeteDeLaFrite() {
$this->assertXPathContentContains('//div[@class="barre_nav"]/span','La fête de la frite',$this->_response->getBody());
public function pageArticleviewBarreNavShouldContainsLinkToCurrentProfil() {
$this->assertXPathContentContains('//div[@class="barre_nav"]/span/a[contains(@href,"/index/index?id_profil=1")]','Accueil');
/** @test */
public function titleShouldBeFeteDeLaFrite() {
$this->assertXpathContentContains('//h1', 'La fête de la frite',$this->_response->getBody());
/** @test */
public function pageTitleShouldContainsLaFeteDeLaFrite() {
$this->assertXpathContentContains('//title', 'La fête de la frite');
}
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
/** @test **/
public function articleInfoListShouldBeDisplay() {
$this->assertXPath('//dl[@class="article_info"]');
}
/** @test **/
public function articleInfoShouldContainsHeureDebut() {
$this->assertXPathContentContains('//dl[@class="article_info"]/dd[@class="event_start_hour"]','12h', $this->_response->getBody());
}
/** @test **/
public function articleInfoShouldContainsHeureFin() {
$this->assertXPathContentContains('//dl[@class="article_info"]/dd[@class="event_end_hour"]','16h');
}
/** @test **/
public function articleInfoShouldContainsLieu() {
$this->assertXPathContentContains('//dl[@class="article_info"]/dd[@class="event_localisation"]','Annecy',$this->_response->getBody());
}
/** @test **/
public function articleInfoShouldContainsTagToutPublic() {
$this->assertXPathContentContains('//dl[@class="article_info"]/dd[@class="event_tag"]','Tout public');
}
/** @test **/
public function articleInfoShouldContainsTagConcert() {
$this->assertXPathContentContains('//dl[@class="article_info"]/dd[@class="event_tag"]','Concert');
}
/** @test **/
public function articleInfoShouldContainsDateDebut() {
$this->assertXPathContentContains('//dl[@class="article_info"]/dd[@class="event_start_date"]','sam 3 sept.',$this->_response->getbody());
}
/** @test **/
public function articleInfoShouldContainsDateFin() {
$this->assertXPathContentContains('//dl[@class="article_info"]/dd[@class="event_end_date"]','mer 5 oct.',$this->_response->getBody());
}
/** @test **/
public function articleInfoShouldContainsCatPublic() {
$this->assertXPathContentContains('//dl[@class="article_info"]/dd[@class="event_cat"]','Alimentaire',$this->_response->getBody());
}
/** @test **/
public function articleInfoShouldContainsBibPortail() {
$this->assertXPathContentContains('//dl[@class="article_info"]/dd[@class="event_bib"]','Bonlieu',$this->_response->getBody());
}
/** @test */
public function calendarDateShouldBeDu3SeptembreAu5Octobre() {
$this->assertXpathContentContains('//span[@class="calendar_event_date"]', 'Du 03 septembre au 05 octobre');
}
/** @test */
public function socialNetworksContainerShouldBePresent() {

llaffont
committed
//on garde le @id="reseaux-sociaux-224" pour la compatibilité avec les persos graphiques
$this->assertXpath('//div[@class="reseaux-sociaux"][contains(@data-article-url, "cms/reseau/id_article/224")]/img[contains(@src, "patience.gif")]');
}
/** @test */
public function initializeResauxSociauxScriptShouldBePresent() {
$this->assertXPathContentContains('//script',
/** @test */
public function contentShouldBePresent() {
$this->assertXpathContentContains('//div[@class="contenu"]', 'Une fête appétissante');
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
}
/** @test */
function withLanguageEnShouldReturnEnglishTranslation() {
$this->bootstrap();
$this->dispatch('/cms/articleview/id/224/language/en');
$this->assertXpathContentContains('//h1', 'Feast of fried');
}
/** @test */
function withLanguageEnEventDateShouldBeTranslated() {
$this->bootstrap();
$this->dispatch('/cms/articleview/id/224/language/en');
$this->assertXpathContentContains('//span[@class="calendar_event_date"]',
'From 03 September to 05 October 2011',
$this->_response->getBody());
}
/** @test */
function withCurrentLocaleEnShouldReturnEnglishTranslation() {
$this->bootstrap();
Zend_Registry::get('session')->language = 'en';
$this->dispatch('/cms/articleview/id/224');
$this->assertXpathContentContains('//h1', 'Feast of fried');
}
/** @test */
public function avisArgShouldNotHaveLinkForDeletion() {
$this->assertNotXPath('//a[contains(@href, "admin/modo/delete-cms-avis/id/35")]');
}
/** @test */
function divShouldContainsAdresseBonlieu() {
$this->assertXPathContentContains('//div[@class="lieu"]', 'Annecy');
}
/** @test */
function divShouldContainsGoogleMap() {
$this->assertXPath('//div[@class="lieu"]//img[contains(@src,"http://maps.googleapis.com/maps")]');
}
/** @test */
public function readSpeakerLinkShouldBePresent() {
$this->assertXPath('//a[@class="readspeaker"][contains(@onclick, "/cms/articleread?id=224")]',
$this->_response->getBody());
}
/** @test */
public function speakStartMarkerShouldBePresent() {
$this->assertXpathContentContains('//article[@class="auto_resize article"]', '<!-- RSPEAK_START -->');
}
/** @test */
public function speakStopMarkerShouldBePresent() {
$this->assertXpathContentContains('//article[@class="auto_resize article"]', '<!-- RSPEAK_STOP -->');
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
}
class CmsControllerArticleViewArticleArchivedWithWorkflowTest extends CmsControllerWithFeteDeLaFriteTestCase {
protected function _loginHook($account) {
$account->ROLE_LEVEL = ZendAfi_Acl_AdminControllerRoles::ABONNE_SIGB;
$account->PSEUDO = "admin";
}
public function setUp() {
parent::setUp();
Class_AdminVar::newInstanceWithId('WORKFLOW', ['valeur' => '1']);
Class_Article::find(224)->beArchived()->assertSave();
$this->dispatch('/cms/articleview/id/224');
}
/** @test */
public function responseShouldBeA404NotFound() {
$this->assertResponseCode(404);
}
/** @test */
public function pageShouldContainsH1WithNotFound() {
$this->assertXPathContentContains('//h1', 'Désolé, cette page n\'existe pas');
}
/** @test */
public function articleTitleShouldNotBeVisible() {
$this->assertNotXPathContentContains('//h1', 'frite');
}
}
class CmsControllerArticleViewArticleArchivedWithWorkflowAsModoBibTest extends CmsControllerWithFeteDeLaFriteTestCase {
protected function _loginHook($account) {
$account->ROLE_LEVEL = ZendAfi_Acl_AdminControllerRoles::MODO_BIB;
$account->PSEUDO = "redac";