Skip to content
Snippets Groups Projects
AbonneControllerMultimediaTest.php 41.1 KiB
Newer Older
/* Cinquième écran choix du poste */
class AbonneControllerMultimediaHoldDeviceTest extends AbonneControllerMultimediaHoldTestCase {
Patrick Barroca's avatar
Patrick Barroca committed
  public function setUp() {
    parent::setUp();
    $this->_prepareLocationInSession();
    $this->_prepareDayInSession();
    $this->_prepareTimeAndDurationInSession();
    $this->_prepareGroupInSession();
Patrick Barroca's avatar
Patrick Barroca committed
    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Multimedia_DeviceHold')
        ->whenCalled('countBy')
        ->answers(0);
Patrick Barroca's avatar
Patrick Barroca committed
    $this->dispatch('/abonne/multimedia-hold-device', true);
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function currentTimelineStepShouldBePoste() {
    $this->_assertCurrentTimelineStep('Poste');
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function posteUnShouldNotBeHoldable() {
    $this->assertNotXPathContentContains('//a','Poste 1');
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function posteDeuxShouldBeHoldable() {
    $this->assertXPathContentContains('//a[contains(@href, "multimedia-hold-device/device/2")]','Poste 2');
  }
/* Cinquième écran validation du choix du poste, redirection vers la confirmation */
class AbonneControllerMultimediaHoldDeviceChoiceTest extends AbonneControllerMultimediaHoldTestCase {
Patrick Barroca's avatar
Patrick Barroca committed
  public function setUp() {
    parent::setUp();
    $this->_prepareLocationInSession();
    $this->_prepareDayInSession();
    $this->_prepareTimeAndDurationInSession();
    $this->_prepareGroupInSession();
    $this->dispatch('/abonne/multimedia-hold-device/device/1', true);
  }


  /** @test */
  public function shouldRedirectToNextStep() {
    $this->assertRedirectTo('/abonne/multimedia-hold-confirm');
  }


  /** @test */
  public function beanShouldHaveDeviceSet() {
    $this->assertEquals(1, $this->_session->holdBean->device);
  }
class AbonneControllerMultimediaHoldDeviceChoiceErrorTest extends AbonneControllerMultimediaHoldTestCase {
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function withoutGroupShouldRedirectToHoldGroup() {
    parent::setUp();
    $this->_prepareLocationInSession();
    $this->_prepareDayInSession();
    $this->_prepareTimeAndDurationInSession();
    $this->dispatch('/abonne/multimedia-hold-device/device/1', true);
    $this->assertRedirectTo('/abonne/multimedia-hold-group');
  }
/* Sixième écran confirmation de la réservation */
class AbonneControllerMultimediaHoldConfirmTest extends AbonneControllerMultimediaHoldTestCase {
Patrick Barroca's avatar
Patrick Barroca committed
  public function setUp() {
    parent::setUp();
    $this->_prepareLocationInSession();
    $this->_prepareDayInSession();
    $this->_prepareTimeAndDurationInSession();
    $this->_prepareGroupInSession();
    $this->_bean->device = 23;
    Class_Multimedia_Device::getLoader()->newInstanceWithId(23)
        ->setLibelle('Poste 1')
        ->setOs('Ubuntu Lucid');
    $this->dispatch('/abonne/multimedia-hold-confirm', true);
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function currentTimelineStepShouldBeConfirmation() {
    $this->_assertCurrentTimelineStep('Confirmation');
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function locationShouldBeAntibes() {
    $this->assertXPathContentContains('//li', 'Lieu : Médiathèque d\'Antibes');
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function dayShouldBeSeptemberTwelve2012() {
    $this->assertXPathContentContains('//li', 'Jour : 12 septembre 2012');
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function startTimeShouldBe9h45() {
    $this->assertXPathContentContains('//li', 'À partir de : 9h45');
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function durationShouldBeFortyFiveMinutes() {
    $this->assertXPathContentContains('//li', 'Durée : 45mn');
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function deviceShouldBePoste1() {
    $this->assertXPathContentContains('//li', 'Poste : Poste 1 - Ubuntu Lucid');
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function confirmationLinkShouldBePresent() {
    $this->assertXPathContentContains('//a[contains(@href, "multimedia-hold-confirm/validate/1")]', 'Confirmer');
  }
/* Sixième écran, réservation confirmée */
class AbonneControllerMultimediaHoldConfirmValidatedTest extends AbonneControllerMultimediaHoldTestCase {
Patrick Barroca's avatar
Patrick Barroca committed
  public function setUp() {
    parent::setUp();
    $this->_prepareLocationInSession();
    $this->_prepareDayInSession();
    $this->_prepareTimeAndDurationInSession();
    $this->_prepareGroupInSession();
    $this->_bean->device = 23;
    Class_Multimedia_Device::getLoader()->newInstanceWithId(23)
        ->setLibelle('Poste 1')
        ->setOs('Ubuntu Lucid');

    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Multimedia_DeviceHold')
        ->whenCalled('save')
        ->willDo(function ($model) {$model->setId(455);return true;});
    $this->dispatch('/abonne/multimedia-hold-confirm/validate/1', true);
  }


  /** @test */
  public function shouldRedirectToHoldView() {
    $this->assertRedirectTo('/abonne/multimedia-hold-view/id/455');
  }
/* Septième écran, visualisation de la réservation */
class AbonneControllerMultimediaHoldViewTest extends AbonneControllerMultimediaHoldTestCase {
Patrick Barroca's avatar
Patrick Barroca committed
  public function setUp() {
    parent::setUp();
    Class_Multimedia_DeviceHold::newInstanceWithId(455)
      ->setUser(Class_Users::getIdentity())
      ->setDevice(Class_Multimedia_Device::newInstanceWithId(34)
                  ->setLibelle('Poste 34')
                  ->setOs('Archlinux')
                  ->setGroup(Class_Multimedia_DeviceGroup::newInstanceWithId(1)
                             ->setLibelle('Groupe 1')
                             ->setLocation(Class_Multimedia_Location::newInstanceWithId(1)
                                           ->setLibelle('Antibes')
                                           ->setBib(Class_Bib::newInstanceWithId(5)
                                                    ->setLibelle('Médiathèque d\'Antibes')))))
      ->setStart(strtotime('2012-12-28 14:30:00'))
      ->setEnd(strtotime('2012-12-28 16:00:00'));
    $this->dispatch('/abonne/multimedia-hold-view/id/455', true);
  }


  /** @test */
  public function locationShouldBeAntibes() {
    $this->assertXPathContentContains('//li', 'Lieu : Médiathèque d\'Antibes');
  }


  /** @test */
  public function dayShouldBeSeptemberTwentyHeight2012() {
    $this->assertXPathContentContains('//li', 'Jour : 28 décembre 2012');
  }


  /** @test */
  public function startTimeShouldBe14h30() {
    $this->assertXPathContentContains('//li', 'À partir de : 14h30');
  }


  /** @test */
  public function durationShouldBeNinetyMinutes() {
    $this->assertXPathContentContains('//li', 'Durée : 90mn');
  }


  /** @test */
  public function deviceShouldBePoste34() {
    $this->assertXPathContentContains('//li', 'Poste : Poste 34 - Archlinux');
  }


  /** @test */
  public function cancelationLinkShouldBePresent() {
    $this->assertXPath('//a[contains(@href, "multimedia-hold-view/id/455/delete/1")]');
  }
class AbonneControllerMultimediaHoldViewDeleteTest extends AbonneControllerMultimediaHoldTestCase {
Patrick Barroca's avatar
Patrick Barroca committed
  protected $_wrapper;
Patrick Barroca's avatar
Patrick Barroca committed
  public function setUp() {
    parent::setUp();
    Class_Multimedia_DeviceHold::getLoader()->newInstanceWithId(455)
        ->setUser(Class_Users::getLoader()->getIdentity());
    $this->_wrapper = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Multimedia_DeviceHold')
        ->whenCalled('delete')
        ->answers(null);
    $this->dispatch('/abonne/multimedia-hold-view/id/455/delete/1', true);
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function deleteShouldHaveBeenCalled() {
    $this->assertTrue($this->_wrapper->methodHasBeenCalled('delete'));
  }
Patrick Barroca's avatar
Patrick Barroca committed
  /** @test */
  public function shouldRedirectToFicheAbonne() {
    $this->assertRedirectTo('/abonne/fiche');
  }
class AbonneControllerMultimediaHoldViewOfAnotherUserTest extends AbonneControllerMultimediaHoldTestCase {
Patrick Barroca's avatar
Patrick Barroca committed
  public function setUp() {
    parent::setUp();
    Class_Multimedia_DeviceHold::getLoader()->newInstanceWithId(455)
        ->setUser(Class_Users::getLoader()->newInstanceWithId(999));
    $this->dispatch('/abonne/multimedia-hold-view/id/455', true);
  }


  /** @test */
  public function shouldRedirectToFicheAbonne() {
    $this->assertRedirectTo('/abonne/fiche');
  }
class AbonneControllerMultimediaHoldFicheAbonneTest extends AbstractControllerTestCase {
Patrick Barroca's avatar
Patrick Barroca committed
  public function setUp() {
    parent::setUp();
    Class_AdminVar::newInstanceWithId('MULTIMEDIA_KEY')->setValeur('aaaaaaaaaaaaaaabbaabba');

    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Multimedia_DeviceHold')
      ->whenCalled('getFutureHoldsOfUser')
      ->with(Class_Users::getIdentity())
      ->answers([Class_Multimedia_DeviceHold::newInstanceWithId(12)
                 ->setStart(strtotime('2012-12-28 14:00:00'))
                 ->setEnd(strtotime('2012-12-28 15:00:00'))
                 ->setDevice(Class_Multimedia_Device::newInstanceWithId(34)
                             ->setLibelle('Poste 1')
                             ->setOs('Archlinux')
                             ->setGroup(Class_Multimedia_DeviceGroup::newInstanceWithId(3)
                                        ->setLocation(Class_Multimedia_Location::newInstanceWithId(2)
                                                      ->setLibelle('Antibes')
                                                      ->setBib(Class_Bib::newInstanceWithId(5)
                                                               ->setLibelle('Médiathèque d\'Antibes')))))
                 ]);
     $this->fixture('Class_Ouverture', ['id' => 1]);

    $this->dispatch('/abonne/fiche', true);
  }


  /** @test */
  public function addHoldLinkShouldBePresent() {
    $this->assertXPath('//a[contains(@href, "multimedia-hold-location")]');
  }


  /** @test */
  public function viewHoldLinkShouldBePresent() {
    $this->assertXPath('//a[contains(@href, "multimedia-hold-view/id/12")]');
  }


  /** @test */
  public function viewHoldLinkShouldBeDisplayLibelleBibOsAndTime() {
    $this->assertXPathContentContains('//a[contains(@href, "multimedia-hold-view/id/12")]',
                                      'Poste 1 - Archlinux, le 28 décembre 2012 à 14h00 pour 60mn, Médiathèque d\'Antibes');
  }
class AbonneControllerMultimediaUsersFixtures {
Patrick Barroca's avatar
Patrick Barroca committed
  public static function getLaurent() {
    return Class_Users::getLoader()->newInstanceWithId(8)
        ->setLogin("laurent")
        ->setPassword("afi")
        ->setNom('laffont')
        ->setPrenom('laurent')
        ->setRoleLevel(2)
        ->setIdabon('bca2')
        ->setNaissance('1978-02-17');
  }


  public static function getBaptiste() {
    return Class_Users::getLoader()->newInstanceWithId(9)
      ->setLogin("baptiste")
      ->setPassword("afi")
      ->beAbonneSIGB()
      ->setNaissance('2005-02-17')
      ->setDateDebut('1978-05-23')
      ->setDateFin('3000-01-01');
  }


  public static function getMireille() {
    return Class_Users::getLoader()->newInstanceWithId(10)
      ->beAbonneSIGB()
      ->setLogin("mireille")
      ->setPassword("afi")
      ->setDateFin('1999-01-01');
  }

  public static function getInvite() {
    return Class_Users::getLoader()->newInstanceWithId(12)
      ->beInvite()
      ->setLogin("invite")
      ->setPassword("invite");

  }

  public static function getArnaud() {
    return Class_Users::getLoader()->newInstanceWithId(11)
      ->beAbonneSIGB()
      ->setLogin("arnaud")
      ->setPassword("lelache");
  }