Newer
Older
<?php
/**
* Copyright (c) 2012, 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
*/

efalcy
committed
abstract class AbonneControllerLoansHistoryTestCase extends AbstractControllerTestCase {
const BASE_URL = 'http://cat-aficg55.biblibre.com/cgi-bin/koha/';

efalcy
committed
protected
$_emprunteur,
$_storm_default_to_volatile = true,
$mock_web_client;

efalcy
committed
public function setUp() {
parent::setUp();
$faustine = $this->fixture('Class_Users', ['id' => 12,
'login' => 'faustine',
'password' => 'toto']);
$this->_emprunteur = new Class_WebService_SIGB_Emprunteur('34', 'faustine');
$faustine->setFicheSigb(['type_comm' => Class_IntBib::COM_KOHA,
'fiche' => $this->_emprunteur]);
ZendAfi_Auth::getInstance()->logUser($faustine);
$this->mock_web_client = $this->mock();
Class_AdminVar::set('KOHA_MULTI_SITES', '');
$params = ['url_serveur' => static::BASE_URL . 'ilsdi.pl',
'restful' => '1'];
$service = Class_WebService_SIGB_Koha::getService($params);
$service->setWebClient($this->mock_web_client);
$this->_emprunteur->setService($service);

efalcy
committed
}
}
class AbonneControllerLoansHistoryWithoutServiceTest extends AbonneControllerLoansHistoryTestCase {
public function setUp() {
parent::setUp();
$this->_emprunteur->setService(null);
$this->dispatch('/abonne/loans-history', true);

efalcy
committed
}
/** @test */
public function pageTitleShouldBeDisplayed() {
$this->assertXPathContentContains('//h1', 'Historique de prêts');

efalcy
committed
}
}
class AbonneControllerLoansHistorySuccessfulTest extends AbonneControllerLoansHistoryTestCase {
public function setUp() {
parent::setUp();
$pomme = $this->fixture('Class_Notice',
['id' => 1456,
'clef_alpha' => 'POMME',
'titre' => 'Tarte au pommes']);
$this->fixture('Class_Exemplaire', ['id' => 123,
'notice' => $pomme,
'code_barres' => '31301009564282']);
$this->mock_web_client
->whenCalled('open_url')
->with(static::BASE_URL . 'rest.pl/user/byid/34/issues_history')
->answers(file_get_contents(realpath(dirname(__FILE__)) . '/../../../../fixtures/koha_issues_history.json'));
$this->dispatch('/abonne/loans-history', true);
}
/** @test */
public function controllerAndActionShouldBeAbonneHistorique() {
$this->assertController('abonne');
$this->assertAction('loans-history');
}
/** @test */

lbrun
committed
public function titleShouldBeDisplay() {
$this->assertXPathContentContains('//table', 'Cedric :Chaud et froid Vol 6');

lbrun
committed
public function loanNoticeShouldBeLinked() {
$this->assertXPath('//td/a[contains(@href, "/recherche/viewnotice/id/1456/retour_abonne/prets")]');
}
/** @test */

lbrun
committed
public function loanWithoutReturnDateShouldNotBeDisplayedInHistory() {
$this->assertNotXPathContentContains('//table[contains(@class, "loans-history")]', 'Le secret du pressoir');
/** @test */

lbrun
committed
public function loanWithoutNoticeShouldNotBeLink() {
$this->assertXPath('//td[not(a)][contains(text(), "L\'hôpital")]');

lbrun
committed
/** @test */
public function HopitalShouldBeFirstElement() {
$this->assertXPathContentContains('//tbody/tr[1]', 'L\'hôpital');
}
}
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
class AbonneControllerLoansHistoryWithoutHistoryTest extends AbonneControllerLoansHistoryTestCase {
public function setUp() {
parent::setUp();
$this->mock_web_client
->whenCalled('open_url')
->with(static::BASE_URL . 'rest.pl/user/byid/34/issues_history')
->answers('[]');
$this->dispatch('/abonne/loans-history', true);
}
/** @test */
public function boxTitleShouldBeDisplay() {
$this->assertXPathContentContains('//h1', 'Historique de prêts');
}
/** @test */
public function loansTitleShouldNotBeDisplay() {
$this->assertNotXPathContentContains('//table', 'Cedric :Chaud et froid Vol 6');
}
/** @test */
public function tableShouldBeDisplay() {
$this->assertXPathContentContains('//table', 'Titre');
}
}
class AbonneControllerLoansHistoryWithErrorTest extends AbonneControllerLoansHistoryTestCase {
public function setUp() {
parent::setUp();
$this->mock_web_client
->whenCalled('open_url')
->with(static::BASE_URL . 'rest.pl/user/byid/34/issues_history')
->answers('error');
$this->dispatch('/abonne/loans-history', true);
/** @test */
public function pageShouldDisplayWebServiceError() {
$this->assertXPathContentContains('//div[@class="error"]', 'Échec de la connexion au webservice, le SIGB a répondu "error"');
}