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 '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([
$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'),
$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']),
]);
$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);
}
/** @test */
public function firstItemDateShouldBe11_11_2011() {
$this->assertXpathContentContains('//channel/item/pubDate',
'11 Nov 2011');
}
/** @test */
public function secondItemDateShouldBe12_12_2012() {
$this->assertXpathContentContains('//channel/item/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() {
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
$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]);
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
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');
}
/** @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 -->');
}
class CmsControllerArticleViewArticleArchivedWithWorkflowTest extends CmsControllerWithFeteDeLaFriteTestCase {
protected function _loginHook($account) {
$account->ROLE_LEVEL = ZendAfi_Acl_AdminControllerRoles::ABONNE_SIGB;
$account->PSEUDO = "admin";
}