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"/>'])
->setDateMaj('2011-11-11 11:11:11')

Matthias Meusburger
committed
->setEventsDebut('2009-09-09 09:09:09');

Laurent
committed
$fete_frite=$this->fixture('Class_Article',
['id' => 2,
'titre' => 'La fête de la frite',
'contenu' => 'Une fête qui sent !',

Laurent
committed
'debut' => '2012-12-12 12:12:12',
'events_debut' => '2012-12-13',
'all_day' => true]);
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_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])

Laurent
committed
->answers([$fete,
$fete_frite ])
$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());
public function secondItemDateShouldBe12_12_2012() {
$this->assertXpathContentContains('//channel/item[2]/pubDate',
'12 Dec 2012',
$this->_response->getBody());
/** @test */
public function secondItemContentShouldContainsLe13Decembre() {
$this->assertXPathContentContains('//channel/item[2]/description',
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() {
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
$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
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
/** @see http://forge.afi-sa.fr/issues/20971 */
class CmsControllerArticleViewByDateOnMonthTest extends AbstractControllerTestCase {
public function setUp() {
parent::setUp();
Storm_Model_Loader::defaultToVolatile();
$this->wrapper = $this->onLoaderOfModel('Class_Article')
->whenCalled('getArticlesByPreferences')
->answers([]);
$this->dispatch('/cms/articleviewbydate/id_profil/1/d/2015-02/id_module/5/select_id_categorie/all', true);
}
public function tearDown() {
Storm_Model_Loader::defaultToDb();
parent::tearDown();
}
/** @test */
public function shouldNotAllowUnpublishedArticles() {
$preferences = $this->wrapper
->getFirstAttributeForLastCallOn('getArticlesByPreferences');
$this->assertNotContains('published', array_keys($preferences));
}
}
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 samedi 03 septembre au lundi 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', 'samedi 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><img src="userfiles/image/foo.jpg" /><p>Une fête appétissante</p></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
}
/** @test */
public function pageShouldContainImageMeta() {
$this->assertXPath('//meta[@property="og:image"][@content="' . ROOT_URL . BASE_URL . '/userfiles/image/foo.jpg"]');

Matthias Meusburger
committed
}
}
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"]',
$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 samedi 03 septembre au mercredi 05 octobre');
/** @test */
public function socialNetworksContainerShouldBePresent() {

llaffont
committed
//on garde le @id="reseaux-sociaux-224" pour la compatibilité avec les persos graphiques