Newer
Older
<?php
/**
* Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
*
* 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).
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
require_once 'application/modules/opac/controllers/CmsController.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 CmsControllerdCalendarRssWithProfileAndArticleTest
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();
CmsController::setTimeSource(new TimeSourceForTest('2014-12-01 14:00:00'));
Class_Calendar::setTimeSource(new TimeSourceForTest('2014-12-01 14:00:00'));
$fete =$this->fixture('Class_Article',
['id' => 1,
'titre' => 'La fête de la banane',
'contenu' => 'Une fête qui glisse !<img src="'.BASE_URL.'/image/banane.jpg"/>'])

Matthias Meusburger
committed
->setDateMaj('2011-11-11 11:11:11')
->setEventsDebut('2009-09-09 09:09:09');
$fete_frite=$this->fixture('Class_Article',
['id' => 2,
'titre' => 'La fête de la frite',
'contenu' => 'Une fête qui sent !',
'debut' => '2012-12-12 12:12:12']);
Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article')
->whenCalled('getArticlesByPreferences')
->with(['titre' => 'Les dernières nouvelles',
'type_aff' => 2,
'id_categorie' => '',
'id_items' => '',
'nb_aff' => 2,
'nb_analyse' => 5,
'display_order' => 'Random',
'display_titles_only' => false,
'rss_avis' => 1,
'op_largeur_img' => 200,
'op_hauteur_boite' => 400,
'boite' => null,
'id_module' => 1,
'event_end_after' => "2014-12-01",
'events_only' => true,
'published' => true])
$this->dispatch('cms/calendarrss?id_profil=2&id_module=1', true);

Ghislain Loas
committed
/** @test */
public function imgShouldBeDisplayWithAbsoluteUrl() {
$this->assertXPathContentContains('//description',
'<img src="http://localhost'.BASE_URL.'/image/banane.jpg"');

Ghislain Loas
committed
}

Ghislain Loas
committed
/** @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);
}

Matthias Meusburger
committed
public function firstItemDateShouldBe09_09_2009() {
$this->assertXpathContentContains('//channel/item[1]/pubDate',

Matthias Meusburger
committed
'09 Sep 2009',
$this->_response->getBody());
}
/** @test */
public function secondItemDateShouldBe12_12_2012() {
$this->assertXpathContentContains('//channel/item[2]/pubDate',
'12 Dec 2012',
$this->_response->getBody());
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() {
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
$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(
['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")]',

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 {
$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')
->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', true);

llaffont
committed
}
/** @test */
public function articleCorrigeCalendirerShouldBePresent() {
$this->assertXpathContentContains('//ul//li//a', 'Corrige le clic', $this->_response->getBody());

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_florence = $this->fixture('Class_Avis' ,
'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 CmsControllerViewNoticeMetasTest extends CmsControllerWithFeteDeLaFriteTestCase {

Matthias Meusburger
committed
public function setUp() {
parent::setUp();
$this->dispatch('/cms/articleview/id/224', true);
}
/** @test */
public function pageShouldContainTitleMeta() {
$this->assertXPathContentContains('//meta[@property="og:title"]/@content', 'La fête de la frite', $this->_response->getBody());
}
/** @test */
public function pageShouldContainDescriptionMeta() {
$this->assertXPath('//meta[@property="og:description"][@content="Une fête appétissante"]');

Matthias Meusburger
committed
}
}
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
class CmsControllerArticleViewInEnglishTest extends CmsControllerWithFeteDeLaFriteTestCase {
/** @test */
function withLanguageEnShouldReturnEnglishTranslation() {
$this->dispatch('/cms/articleview/id/224/language/en');
$this->assertXpathContentContains('//h1', 'Feast of fried');
}
/** @test */
function withLanguageEnEventDateShouldBeTranslated() {
$this->dispatch('/cms/articleview/id/224/language/en', true);
$this->assertXpathContentContains('//span[@class="calendar_event_date"]',
'From 03 September to 05 October 2011',
$this->_response->getBody());
}
/** @test */
function withCurrentLocaleEnShouldReturnEnglishTranslation() {
Zend_Registry::get('session')->language = 'en';
$this->dispatch('/cms/articleview/id/224');
$this->assertXpathContentContains('//h1', 'Feast of fried');
}
}
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');
/** @test */
public function pageTitleShouldContainsLaFeteDeLaFrite() {
$this->assertXpathContentContains('//title', 'La fête de la frite');
}
/** @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');
}
/** @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');
}
/** @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.');
}
/** @test **/
public function articleInfoShouldContainsDateFin() {
$this->assertXPathContentContains('//dl[@class="article_info"]/dd[@class="event_end_date"]','mer 5 oct.');
}
/** @test **/
public function articleInfoShouldContainsCatPublic() {
$this->assertXPathContentContains('//dl[@class="article_info"]/dd[@class="event_cat"]','Alimentaire');
}
/** @test **/
public function articleInfoShouldContainsBibPortail() {
$this->assertXPathContentContains('//dl[@class="article_info"]/dd[@class="event_bib"]','Bonlieu');
/** @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');
/** @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');
}