Skip to content
Snippets Groups Projects
Commit e72d0af2 authored by Ghislain Loas's avatar Ghislain Loas
Browse files

dev #30918 start implementing webservice calls

parent 5d3166e8
Branches
Tags
2 merge requests!1185Dev#30918 developper l interface suggestion d achat vers ws nanook realisation,!1165Dev#30918 developper l interface suggestion d achat vers ws nanook realisation
- ticket #30918 : Développer l'interface suggestion d'achat vers WS Nanook : réalisation
\ No newline at end of file
......@@ -16,7 +16,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
class Class_WebService_SIGB_Nanook extends Class_WebService_SIGB_Abstract {}
?>
\ No newline at end of file
......@@ -16,7 +16,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
class Class_WebService_SIGB_Nanook_PatronInfoReader extends Class_WebService_SIGB_AbstractILSDIPatronInfoReader{
/**
......@@ -52,62 +52,62 @@ class Class_WebService_SIGB_Nanook_PatronInfoReader extends Class_WebService_SIG
}
/**
* @param string $data
/**
* @param string $data
*/
public function endBarcode($data) {
$this->_emprunteur->setCodeBarres($data);
}
/**
* @param string $data
/**
* @param string $data
*/
public function endAddress($data) {
$this->_emprunteur->setAdresse($data);
}
/**
* @param string $data
/**
* @param string $data
*/
public function endTown($data) {
$this->_emprunteur->setVille($data);
}
/**
* @param string $data
/**
* @param string $data
*/
public function endZipCode($data) {
$this->_emprunteur->setCodePostal($data);
}
/**
* @param string $data
/**
* @param string $data
*/
public function endPhoneNumber($data) {
$this->_emprunteur->setTelephone($data);
}
/**
* @param string $data
/**
* @param string $data
*/
public function endDisplayOrder($data) {
$this->_emprunteur->setOrdre($data);
}
/**
* @param string $data
/**
* @param string $data
*/
public function endBirthDate($data) {
$this->_emprunteur->setDateNaissance($data);
}
/**
* @param string $data
*/
......@@ -143,8 +143,8 @@ class Class_WebService_SIGB_Nanook_PatronInfoReader extends Class_WebService_SIG
}
/**
* @param string $data
/**
* @param string $data
*/
public function endAvailable($data) {
if (1 == (int)$data) {
......@@ -161,5 +161,13 @@ class Class_WebService_SIGB_Nanook_PatronInfoReader extends Class_WebService_SIG
if ('' != $data)
$this->_currentHold->setEtat('Pas disponible avant le ' . $data);
}
public function getSuggestions() {
return [];
}
}
?>
\ No newline at end of file
......@@ -160,5 +160,41 @@ class Class_Webservice_SIGB_Nanook_Service extends Class_WebService_SIGB_Abstrac
return $this->getServerRoot() . implode('/', $parts);
}
public function providesSuggestions() {
return true;
}
public function suggestionsOf($user) {
if (!$this->ilsdiAuthenticatePatron($user))
return $this->_error($this->_('Échec de l\'authentification par le webservice'));
return $this->getSuggestionsFromilsdiPatronInfo(['patronId' => $user->getIdSigb()],
Class_WebService_SIGB_Nanook_PatronInfoReader::newInstance());
}
protected function getSuggestionsFromilsdiPatronInfo($params, $reader, $error_tag='error') {
$emprunteur = Class_WebService_SIGB_Emprunteur::newInstance()->setService($this);
$params = array_merge(['service' => 'GetPatronInfo'],
$params);
$xml = $this->httpGet($params);
if (0 === strpos($xml, '<html>'))
return [];
if ($this->_getTagData($xml, $error_tag))
return [];
return $reader
->setEmprunteur($emprunteur)
->parseXML($xml)
->getSuggestions();
}
}
?>
\ No newline at end of file
<?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());
}
}
<?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
*/
class NanookFixtures {
public static function patronInfoResponse() {
return '
<getpatroninfo>
<patronid>
3358
</patronid>
<barcode>
01
</barcode>
<lastname>
ALBATOR
</lastname>
<firstname>
Lucien
</firstname>
<displayorder>
1
</displayorder>
<birthdate>
1950-01-01
</birthdate>
<phonenumber></phonenumber>
<town></town>
<zipcode></zipcode>
<address></address>
<enddate>
2020-10-05
</enddate>
<mail></mail>
<loans></loans>
<holds></holds>
<suggests>
<suggest>
<site>
2
</site>
<status>
En attente
</status>
<title>
test
</title>
<author>
test
</author>
<isbnean></isbnean>
<desclink></desclink>
<comment></comment>
</suggest>
</suggests>
</getpatroninfo>
';
}
public static function authenticatePatronResponse() {
return '<AuthenticatePatron><patronId>187</patronId></AuthenticatePatron>';
}
}
?>
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment