-
llaffont authored
- mise sous test - coche verte pour valider, croix rouge pour supprimer - lien pour envoyer mail à l'abonné
17f96f25
AdminAvisModerationControllerTest.php 8.62 KiB
<?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';
require_once 'Class/AvisNotice.php';
require_once 'Class/Notice.php';
require_once 'Class/Users.php';
abstract class AdminAvisModerationControllerTestCase extends AbstractControllerTestCase {
protected function _initProfilHook($profil) {
$profil->setLibelle('AFI');
}
protected function _loginHook($account) {
$account->ROLE = "admin_portail";
$account->LOGIN = "sysadmin";
$account->PSEUDO = "admin";
}
public function setUp() {
parent::setUp();
$this->erik = new Class_Users();
$this->erik
->setId(3)
->setRoleLevel(2)
->setPseudo('Erik');
$this->marcus = new Class_Users();
$this->marcus
->setId(5)
->setRoleLevel(2)
->setPseudo('Marcus');
$this->club_cinq = new Class_Notice();
$this->club_cinq
->setId(18)
->setTitrePrincipal('Club des cinq');
$this->guide_routard = new Class_Notice();
$this->guide_routard
->setId(25)
->setTitrePrincipal('Guide du routard');
$this->avis_erik_club = new Class_AvisNotice();
$this->avis_erik_club
->setId(38)
->setUser($this->erik)
->setNotice($this->club_cinq)
->setEntete('pour les jeunes')
->setAvis('ça me rappelle mon enfance')
->setDateAvis('2005-03-27')
->setAbonOuBib(0)
->setStatut(1)
->setNote(4);
$this->avis_marcus_routard = new Class_AvisNotice();
$this->avis_marcus_routard
->setId(42)
->setUser($this->marcus)
->setNotice($this->guide_routard)
->setEntete('pour les routard')
->setAvis('qui aiment bien manger')
->setDateAvis('2010-07-21')
->setAbonOuBib(0)
->setStatut(1)
->setNote(2);
$this->avis_loader = $this->_generateLoaderFor('Class_AvisNotice',
array('findAllBy', 'save', 'delete', 'find'));
}
}
class AdminAvisModerationControllerAvisToModerateTest extends AdminAvisModerationControllerTestCase {
public function setUp() {
parent::setUp();
$this->avis_loader
->expects($this->once())
->method('findAllBy')
->with(array('statut' => 0, 'limit' => 100))
->will($this->returnValue(array($this->avis_marcus_routard, $this->avis_erik_club)));
$this->dispatch('/admin/modo/avisnotice');
}
public function testClubCinqTitle() {
$this->assertQueryContentContains('h2', 'Club des cinq');
}
public function testGuideRoutardTitle() {
$this->assertQueryContentContains('h2', 'Guide du routard');
}
public function testClubCinqLinkValidate() {
$this->assertXPath("//a[@href='/admin/modo/validateavisnotice/id/38']");
}
public function testRoutardLinkValidate() {
$this->assertXPath("//a[@href='/admin/modo/validateavisnotice/id/42']");
}
public function testClubCinqLinkEdit() {
// $this->assertXPath("//a[@href='/admin/modo/editavisnotice/id/38']");
}
public function testRoutardLinkEdit() {
// $this->assertXPath("//a[@href='/admin/modo/editavisnotice/id/42']");
}
public function testClubCinqLinkDel() {
$this->assertXPath("//a[@href='/admin/modo/delavisnotice/id/38']");
}
public function testRoutardLinkDel() {
$this->assertXPath("//a[@href='/admin/modo/delavisnotice/id/42']");
}
}
class AdminAvisModerationControllerAvisDelTest extends AdminAvisModerationControllerTestCase {
public function setUp() {
parent::setUp();
$this->avis_loader
->expects($this->once())
->method('find')
->with(38)
->will($this->returnValue($this->avis_erik_club));
$this->avis_loader
->expects($this->once())
->method('delete')
->with($this->avis_erik_club);
$this->dispatch('/admin/modo/delavisnotice/id/38');
}
public function testRedirectToAvisPage() {
$this->assertRedirectTo('/admin/modo/avisnotice');
}
}
class AdminAvisModerationControllerAvisValidateTest extends AdminAvisModerationControllerTestCase {
public function setUp() {
parent::setUp();
$this->avis_loader
->expects($this->once())
->method('find')
->with(38)
->will($this->returnValue($this->avis_erik_club));
$this->avis_loader
->expects($this->once())
->method('save')
->with($this->avis_erik_club);
$this->dispatch('/admin/modo/validateavisnotice/id/38');
}
public function testRedirectToAvisPage() {
$this->assertRedirectTo('/admin/modo/avisnotice');
}
public function testStatutIsOne() {
$this->assertEquals(1, $this->avis_erik_club->getStatut());
}
public function testIsModerationOK() {
$this->assertTrue($this->avis_erik_club->isModerationOK());
}
}
class AdminAvisModerationControllerCmsWithNoAvisTest extends Admin_AbstractControllerTestCase {
public function setUp() {
parent::setUp();
Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Avis')
->whenCalled('findAllBy')
->answers([]);
$this->dispatch('/admin/modo/aviscms');
}
/** @test */
public function h4ShouldContainAucunAvisAModerer() {
$this->assertXPathContentContains('//h4', "Il n'y a aucun avis à modérer");
}
}
abstract class AdminAvisModerationControllerCmsWithAvisTestCase extends Admin_AbstractControllerTestCase {
public function setUp() {
parent::setUp();
$avis = Class_Avis::newInstanceWithId(12, ['date_avis' => '2012-12-03',
'note' => 4,
'entete' => 'Mon avis',
'avis' => 'Cet article est inspirant',
'abon_ou_bib' => 0])
->setArticle(Class_Article::newInstanceWithId(9, ['titre' => 'Tintin à Annecy']))
->setUser(Class_Users::newInstanceWithId(34, ['pseudo' => 'Pat',
'mail' => 'pat@afi.fr']));
Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Avis')
->whenCalled('findAllBy')
->with(['statut' => 0,
'order' => 'date_avis desc'])
->answers([$avis]);
}
}
class AdminAvisModerationControllerCmsWithAvisTest extends AdminAvisModerationControllerCmsWithAvisTestCase {
public function setUp() {
parent::setUp();
$this->dispatch('/admin/modo/aviscms', true);
}
/** @test */
public function pageShouldContainsLinkToArticle() {
$this->assertXPathContentContains('//a[contains(@href, "/admin/cms/viewcms/id/9")]',
"Tintin à Annecy",
$this->_response->getBody());
}
/** @test */
public function pageShouldContainsActionToValidateAvis() {
$this->assertXPath('//a[contains(@href, "/admin/modo/validate-aviscms/id/12")]');
}
/** @test */
public function pageShouldContainsActionToDeleteAvis() {
$this->assertXPath('//a[contains(@href, "/admin/modo/delete-aviscms/id/12")]');
}
/** @test */
public function pageShouldContainsActionToSendMail() {
$this->assertXPath('//a[contains(@href, "mailto:pat")]');
}
/** @test */
public function pageShouldContainsLinkToEditUser() {
$this->assertXPath('//a[contains(@href, "/admin/users/edit/id/34")]');
}
}
class AdminAvisModerationControllerCmsDeleteAvisTest extends AdminAvisModerationControllerCmsWithAvisTestCase {
public function setUp() {
parent::setUp();
Class_Avis::whenCalled('delete')->answers(true);
$this->dispatch('/admin/modo/delete-aviscms/id/12', true);
}
/** @test */
public function pageShouldRedirectToAvisCms() {
$this->assertRedirectTo('/admin/modo/aviscms');
}
/** @test */
public function avisShouldHaveBeenDeleted() {
$this->assertTrue(Class_Avis::methodHasBeenCalled('delete'));
}
}
class AdminAvisModerationControllerCmsValidateAvisTest extends AdminAvisModerationControllerCmsWithAvisTestCase {
public function setUp() {
parent::setUp();
Class_Avis::whenCalled('save')->answers(true);
$this->dispatch('/admin/modo/validate-aviscms/id/12', true);
}
/** @test */
public function pageShouldRedirectToAvisCms() {
$this->assertRedirectTo('/admin/modo/aviscms');
}
/** @test */
public function avisShouldHaveBeenSaved() {
$this->assertTrue(Class_Avis::methodHasBeenCalled('save'));
}
/** @test */
public function avisShouldBeValid() {
$this->assertEquals(1, Class_Avis::find(12)->getStatut());
}
}
?>