Skip to content
Snippets Groups Projects
Commit f8e132e6 authored by llaffont's avatar llaffont
Browse files

Dynix WS: réservation des exemplaires

parent 0754c3e1
Branches
Tags
No related merge requests found
......@@ -95,4 +95,9 @@ class Class_WebService_SIGB_Dynix_LookupMyAccountInfoResponseReader {
public function endAvailable($data) {
$this->_current_operation->setEtat($data == 'true' ? $this->_('Disponible') : $this->_('Réservé'));
}
public function endHoldKey($data) {
$this->_current_operation->setId($data);
}
}
......@@ -38,15 +38,6 @@ class Class_Webservice_SIGB_Dynix_Service extends Class_WebService_SIGB_Abstract
}
public function reserverExemplaire($user, $exemplaire, $code_annexe){}
public function supprimerReservation($user, $reservation_id){}
public function prolongerPret($user, $pret_id){}
public function getNotice($id){
return $this->httpGetNotice(['namespace' => 'standard',
'service' => 'lookupTitleInfo',
......@@ -100,6 +91,27 @@ class Class_Webservice_SIGB_Dynix_Service extends Class_WebService_SIGB_Abstract
}
public function reserverExemplaire($user, $exemplaire, $code_annexe){
$session_token = $this->openSessionForUser($user);
$xml = $this->httpGet(['namespace' => 'patron',
'service' => 'createMyHold',
'titleKey' => $exemplaire->getIdOrigine(),
'pickupLibraryID' => $code_annexe,
'clientID' => $this->_client_id,
'sessionToken' => $session_token]);
if ($error = $this->_getTagData($xml, 'string'))
return ['statut' => false, 'erreur' => $error];
return ['statut' => true, 'erreur' => ''];
}
public function supprimerReservation($user, $reservation_id){}
public function prolongerPret($user, $pret_id){}
/**
* @param array $options
......
......@@ -301,6 +301,15 @@ class DynixFixtures {
</ns3:patronHoldInfo>
</ns3:LookupMyAccountInfoResponse>';
}
public static function createMyHoldFaultXML() {
return '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Fault xmlns="http://schemas.sirsidynix.com/rest">
<code>com.sirsidynix.symws.service.exceptions.ErrorResponseException.$(92)</code>
<string>Vous ne pouvez plus emprunter, adressez-vous au bibliothécaire</string>
</Fault>';
}
}
......
......@@ -255,6 +255,12 @@ class DynixGetEmprunteurManuLarcinetTest extends DynixTestCase {
}
/** @test */
public function firstReservationIDShouldBe160540() {
$this->assertEquals('160540', $this->_manu->getReservationAt(0)->getId());
}
/** @test */
public function firstReservationRangShouldBeOne() {
$this->assertEquals(1, $this->_manu->getReservationAt(0)->getRang());
......@@ -287,4 +293,59 @@ class DynixGetEmprunteurManuLarcinetTest extends DynixTestCase {
}
}
class DynixOperationsTestTest extends DynixTestCase {
protected $_manu;
public function setUp() {
parent::setUp();
$this->_mock_web_client
->whenCalled('open_url')
->with('http://www.infocom94.fr:8080/capcvm/rest/security/loginUser?clientID=SymWS&login=0917036&password=secret')
->answers(DynixFixtures::loginUserManuLarcinetXml())
->whenCalled('open_url')
->with('http://www.infocom94.fr:8080/capcvm/rest/security/logoutUser?clientID=SymWS&sessionToken=497e6380-69fb-4850-b552-40dede41f0b5')
->answers('')
->beStrict();
$this->_manu = Class_Users::newInstanceWithId(3, ['login' => '0917036',
'password' => 'secret']);
}
/** @test */
public function successfulReservationShouldReturnStatutTrue() {
$this->_mock_web_client
->whenCalled('open_url')
->with('http://www.infocom94.fr:8080/capcvm/rest/patron/createMyHold?titleKey=231595&pickupLibraryID=ALFMEDA&clientID=SymWS&sessionToken=497e6380-69fb-4850-b552-40dede41f0b5')
->answers('163144');
$this->assertEquals(['statut' => true, 'erreur' => ''],
$this->_service->reserverExemplaire($this->_manu,
Class_Exemplaire::newInstance()
->setIdOrigine('231595'),
'ALFMEDA'));
}
/** @test */
public function reservationWithFaultShouldReturnStatutFalseWithErrorMessage() {
$this->_mock_web_client
->whenCalled('open_url')
->with('http://www.infocom94.fr:8080/capcvm/rest/patron/createMyHold?titleKey=231596&pickupLibraryID=CRETBUS&clientID=SymWS&sessionToken=497e6380-69fb-4850-b552-40dede41f0b5')
->answers(DynixFixtures::createMyHoldFaultXML());
$this->assertEquals(['statut' => false,
'erreur' => 'Vous ne pouvez plus emprunter, adressez-vous au bibliothécaire'],
$this->_service->reserverExemplaire($this->_manu,
Class_Exemplaire::newInstance()
->setIdOrigine('231596'),
'CRETBUS'));
}
}
?>
\ 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