Skip to content
Snippets Groups Projects
AbonneControllerSuggestionAchatNanookTest.php 4.43 KiB
Newer Older
<?php
/**
 * Copyright (c) 2012-2014, Agence Française Informatique (AFI). All rights reserved.
 *
 * BOKEH 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).
 *
 * BOKEH 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 BOKEH; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
 */

require_once 'tests/fixtures/NanookFixtures.php';

abstract class AbstractAbonneControllerSuggestionAchatNanookTestCase extends AbstractControllerTestCase {
  protected
    $_storm_default_to_volatile = true,
    $_francis;

  public function setUp() {
    parent::setUp();

    $logger = $this->mock()
                   ->whenCalled('log')->answers(true)

                   ->whenCalled('logError')
                   ->willDo(
                            function($url, $message) {
                              throw new RuntimeException($url . ' :: ' . $message);
                            });

    Class_WebService_SIGB_AbstractService::setLogger($logger);


    $sigb_conf = $this->fixture('Class_IntBib',
                                ['id' => 3,
                                 'comm_params' => ['url_serveur' => ''],
                                 'comm_sigb' => Class_IntBib::COM_NANOOK]);

    $this->fixture('Class_Bib', ['id' => 12,
                                 'libelle' => 'Tatim bib',
                                 'int_bib' => $sigb_conf]);

    $this->_francis = $this->fixture('Class_Users', ['id' => 3,
                                                     'login' => 'francis',
                                                     'password' => 'test',
                                                     'int_bib' => $sigb_conf]);

    ZendAfi_Auth::getInstance()->logUser($this->_francis);

    $this->mock_web_client = $this->mock();
    $this->mock_web_client
      ->whenCalled('open_url')
      ->with('http:///service/AuthenticatePatron/username/francis/password/test')
      ->answers(NanookFixtures::authenticatePatronResponse())

      ->whenCalled('open_url')
      ->with('http:///service/GetPatronInfo/patronId/187')
      ->answers(NanookFixtures::patronInfoResponse())

      ->beStrict();

    $sigb_comm = Class_IntBib::find(3)->getSIGBComm();
    $sigb_comm->setWebClient($this->mock_web_client);

  }
}



class AbonneControllerSuggestionAchatNanookListTest extends AbstractAbonneControllerSuggestionAchatNanookTestCase {

  public function setUp() {
    parent::setUp();
    $this->dispatch('/opac/abonne/suggestion-achat', true);
  }


  /** @test */
  public function pageShouldContainsSuggestionFromNanook() {
    $this->assertXPathContentContains('//div', 'some suggestions', $this->_response->getBody());
  }
}



class AbonneControllerSuggestionAchatNanookAddTest extends AbstractAbonneControllerSuggestionAchatNanookTestCase {
  protected $_storm_default_to_volatile = true;

  public function setUp() {
    parent::setUp();
    $this->dispatch('/opac/abonne/suggestion-achat-add', true);
  }


  /** @test */
  public function formShouldContainsNanookElement() {
    $this->assertXPathContentContains('//div', 'some suggestions', $this->_response->getBody());
  }
}



class AbonneControllerSuggestionAchatNanookAddPostTest extends AbstractAbonneControllerSuggestionAchatNanookTestCase {
  protected $_storm_default_to_volatile = true;

  public function setUp() {
    parent::setUp();
    $this->postDispatch('/opac/abonne/suggestion-achat-add', ['titre' => 'fu',
                                                              'auteur' => 'mf',
                                                              'isbn' => '2-07-0541 27_4',
                                                              'description_url' => 'bokeh-kibrary-portail.org',
                                                              'commentaire' => 'no']);
  }


  /** @test */
  public function suggestionShouldHaveBeenSend() {
    $this->assertContains(['suggestion'], $this->_francis->getSuggestionAchat());
  }
}