diff --git a/categories.org b/categories.org index 8f8da37b3d257a484bcf704d32d10d34e22fa3f1..10c9168ede87dfaf52389a7ce09463bef39d9371 100644 --- a/categories.org +++ b/categories.org @@ -9,6 +9,8 @@ [[file:tests/application/modules/admin/controllers/OuverturesControllerTest.php::abstract%20class%20OuverturesControllerTestCase%20extends%20Admin_AbstractControllerTestCase%20{][Tests Controller Ouvertures]] [[file:application/modules/admin/controllers/OuverturesController.php::class%20Admin_OuverturesController%20extends%20ZendAfi_Controller_Action%20{][Controller Ouvertures]] +** TODO prendre en compte admin_url dans le push + ** Réservation automatique [1/3] cf [[file:application/modules/opac/controllers/AbonneController.php::and%20null%20!%3D%20($hold%20%3D%20$device->getCurrentHoldForUser($user))][Abonne authenticateAction]] [[file:library/Class/Multimedia/Device.php::public%20function%20autoHoldByUser($user,%20$current_hold)%20{][Device autoHoldByUser]] @@ -16,13 +18,14 @@ cf [[file:application/modules/opac/controllers/AbonneController.php::and%20null% *** DONE adapter getMaxTimeForToday avec les ouvertures dans [[file:library/Class/Multimedia/Device.php::if%20($end%20>%20($next_closing%20%3D%20$this->getMaxTimeForToday()))][Device autoHold]] CLOSED: [2012-08-07 Tue 17:59] *** TODO Ajouter la vérification du quota (factoriser avec [[file:application/modules/opac/controllers/AbonneController.php::/*%20V%C3%A9rification%20du%20quota%20sur%20le%20jour%20choisi%20*/][ce qui est fait dans AbonneController]] (en fait déjà dans [[file:library/Class/Users.php::public%20function%20getMultimediaQuotaErrorForDay($day)%20{][Users::getMultimediaQuotaErrorForDay]] -*** TODO Rajouter les erreurs +*** TODO Rajouter les erreurs [1/4] Erreurs renvoyées [[file:application/modules/opac/controllers/AbonneController.php::$response->error%20%3D%20$request->getError()%3B][dans authenticate]] avec le Multimedia_AuthenticateRequest Rajouter erreurs: -**** réservation prévue sur une durée < slot: peux pas réserver, réservation prévue dans xx mn => Rajouter une durée minimale de réservation auto (par ex., si on réserve en plein milieu d'un slot et que le slot suivant déjà réservé, on peut ou pas utiliser le poste selon le temps restant avant ce prochain slot) -**** réservation auto. pas activée et aucune réservation pour l'utilisateur -**** c'est pas l'utilisateur qui a réservé (réservation en cours) -**** poste/device non trouvé +**** TODO réservation prévue sur une durée < slot: peux pas réserver, réservation prévue dans xx mn => Rajouter une durée minimale de réservation auto (par ex., si on réserve en plein milieu d'un slot et que le slot suivant déjà réservé, on peut ou pas utiliser le poste selon le temps restant avant ce prochain slot) +**** TODO réservation auto. pas activée et aucune réservation pour l'utilisateur +**** TODO c'est pas l'utilisateur qui a réservé (réservation en cours) +**** DONE poste/device non trouvé + CLOSED: [2012-08-10 Fri 11:28] ** Réservation d'un poste [1/3] [[file:tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php::abstract%20class%20AbonneControllerMultimediaAuthenticateTestCase%20extends%20AbstractControllerTestCase%20{][Test controller Abonne]] *** [[file:tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php::class%20AbonneControllerMultimediaHoldLocationTest%20extends%20AbonneControllerMultimediaHoldTestCase%20{][1er écran choix du lieu]] diff --git a/library/Class/Multimedia/AuthenticateRequest.php b/library/Class/Multimedia/AuthenticateRequest.php index 9397759505400b015acb556fa628da06f6a098fa..4d86d2ed1d32ef8f4979684245394cad61f6d867 100644 --- a/library/Class/Multimedia/AuthenticateRequest.php +++ b/library/Class/Multimedia/AuthenticateRequest.php @@ -51,31 +51,25 @@ class Class_Multimedia_AuthenticateRequest { if (!($login = $request->getParam('login')) || !($password = $request->getParam('password')) || !($poste = $request->getParam('poste')) - || !($site = $request->getParam('site'))) { - $this->_error = 'MissingParameter'; - return $this; - } - - if (!$user = Class_Users::getLoader()->findFirstBy(array('login' => $login))) { - $this->_error = 'UserNotFound'; - return $this; - } - - if (($user->getPassword() !== $password)) { - $this->_error = 'PasswordIsWrong'; - return $this; - } - - if (!$user->isAbonnementValid()) { - $this->_error = 'SubscriptionExpired'; - return $this; - } + || !($site = $request->getParam('site'))) + return $this->_error('MissingParameter'); + + if (!$user = Class_Users::getLoader()->findFirstBy(array('login' => $login))) + return $this->_error('UserNotFound'); + + if (($user->getPassword() !== $password)) + return $this->_error('PasswordIsWrong'); + + if (!$user->isAbonnementValid()) + return $this->_error('SubscriptionExpired'); $this->_user = $user; - + if ($location = Class_Multimedia_Location::getLoader()->findByIdOrigine($site)) - $this->_device = Class_Multimedia_Device::getLoader() - ->findByIdOrigineAndLocation($poste, $location); + $this->_device = Class_Multimedia_Device::getLoader()->findByIdOrigineAndLocation($poste, $location); + + if (!$this->_device) + return $this->_error('DeviceNotFound'); return $this->beValid(); } @@ -110,5 +104,15 @@ class Class_Multimedia_AuthenticateRequest { public function getDevice() { return $this->_device; } + + + /** + * @param string $code + * @return Class_Multimedia_Device + */ + protected function _error($code) { + $this->_error = $code; + return $this; + } } ?> \ No newline at end of file diff --git a/tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php b/tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php index 5b925a1e3049b20b8390c936684bd9551b2d0022..51bd8eceb54d6dc0991f94010ceb21b0456887fc 100644 --- a/tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php +++ b/tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php @@ -21,6 +21,40 @@ require_once 'AbstractControllerTestCase.php'; +trait TAbonneControllerMultimediaFixtureHoldSuccessOnSept12 { + protected function _launch() { + $this->onLoaderOfModel('Class_Multimedia_Location') + ->whenCalled('findByIdOrigine') + ->answers(Class_Multimedia_Location::newInstanceWithId(1)); + + + $this->onLoaderOfModel('Class_Multimedia_Device') + ->whenCalled('findByIdOrigineAndLocation') + ->answers(Class_Multimedia_Device::newInstanceWithId(1)); + + $this->onLoaderOfModel('Class_Multimedia_DeviceHold') + ->whenCalled('getHoldOnDeviceAtTime') + ->answers(Class_Multimedia_DeviceHold::newInstanceWithId(333) + ->setIdUser($this->_user->getId()) + ->setEnd(strtotime('2012-09-12 16:40:00'))); + + parent::_launch(); + } +} + + + + +trait TAbonneControllerMultimediaFixtureWithUserLaurentInDevsAgiles { + protected function _initUser() { + $this->_user = AbonneControllerMultimediaUsersFixtures::getLaurent(); + $this->_group= 'Devs agiles'; + } +} + + + + abstract class AbonneControllerMultimediaAuthenticateTestCase extends AbstractControllerTestCase { protected $_json; @@ -77,9 +111,9 @@ class AbonneControllerMultimediaAuthenticateValidationTest extends AbonneControl public function setUp() { parent::setUp(); $this->_expectUserToLoad(AbonneControllerMultimediaUsersFixtures::getLaurent()); - } + } + - /** @test */ public function responseShouldNotBeARedirect() { $json = $this->getJson('/abonne/authenticate/login/any/password/any'); @@ -165,31 +199,9 @@ abstract class AbonneControllerMultimediaAuthenticateValidTestCase extends Abonn class AbonneControllerMultimediaAuthenticateLaurentTest extends AbonneControllerMultimediaAuthenticateValidTestCase { - protected function _initUser() { - $this->_user = AbonneControllerMultimediaUsersFixtures::getLaurent(); - $this->_group= 'Devs agiles'; - } - - - protected function _launch() { - $this->onLoaderOfModel('Class_Multimedia_Location') - ->whenCalled('findByIdOrigine') - ->answers(Class_Multimedia_Location::newInstanceWithId(1)); - - - $this->onLoaderOfModel('Class_Multimedia_Device') - ->whenCalled('findByIdOrigineAndLocation') - ->answers(Class_Multimedia_Device::newInstanceWithId(1)); - - $this->onLoaderOfModel('Class_Multimedia_DeviceHold') - ->whenCalled('getHoldOnDeviceAtTime') - ->answers(Class_Multimedia_DeviceHold::newInstanceWithId(333) - ->setIdUser($this->_user->getId()) - ->setEnd(strtotime('2012-09-12 16:40:00'))); - - parent::_launch(); - } - + use + TAbonneControllerMultimediaFixtureHoldSuccessOnSept12, + TAbonneControllerMultimediaFixtureWithUserLaurentInDevsAgiles; /** @test */ public function shouldNotReturnError() { @@ -255,20 +267,59 @@ class AbonneControllerMultimediaAuthenticateLaurentTest extends AbonneController +class AbonneControllerMultimediaAuthenticateLaurentDeviceNotFoundTest extends AbonneControllerMultimediaAuthenticateValidTestCase { + use TAbonneControllerMultimediaFixtureWithUserLaurentInDevsAgiles; + + protected function _launch() { + $this->onLoaderOfModel('Class_Multimedia_Location') + ->whenCalled('findByIdOrigine') + ->answers(Class_Multimedia_Location::newInstanceWithId(1)); + + + $this->onLoaderOfModel('Class_Multimedia_Device') + ->whenCalled('findByIdOrigineAndLocation') + ->answers(null); + + parent::_launch(); + } + + + /** @test */ + public function jsonShouldContainsErrorDeviceNotFound() { + $this->assertEquals('DeviceNotFound', $this->_json->error); + } +} + + + + class AbonneControllerMultimediaAuthenticateArnaudTest extends AbonneControllerMultimediaAuthenticateValidTestCase { + use TAbonneControllerMultimediaFixtureHoldSuccessOnSept12; + protected function _initUser() { $this->_user = AbonneControllerMultimediaUsersFixtures::getArnaud(); $this->_group= 'Patrons'; } + /** @test */ public function groupsShouldBeInviteAndPatrons() { $this->assertEquals(array('invite', 'Patrons'), $this->_json->groupes); } + + + /** @test */ + public function shouldNotReturnError() { + $this->assertFalse(property_exists($this->_json, 'error')); + } } + + class AbonneControllerMultimediaAuthenticateBaptisteTest extends AbonneControllerMultimediaAuthenticateValidTestCase { + use TAbonneControllerMultimediaFixtureHoldSuccessOnSept12; + protected function _initUser() { $this->_user = AbonneControllerMultimediaUsersFixtures::getBaptiste(); $this->_group= 'Devs Oldschool';