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

Dynix: récupération de la réservabilité

parent 58c25471
Branches
Tags
No related merge requests found
......@@ -34,7 +34,7 @@ class Class_Webservice_SIGB_Dynix_Service extends Class_WebService_SIGB_Abstract
public function getNotice($id){
return $this->httpGetNotice(['service' => 'lookupTitleInfo',
'clientID' => 'myid',
'titleID' => '233823',
'titleID' => $id,
'includeItemInfo' => 'true',
'includeAvailabilityInfo' => 'true'],
......
......@@ -21,7 +21,9 @@
class Class_WebService_SIGB_Dynix_TitleInfoResponseReader extends Class_WebService_SIGB_AbstractXMLNoticeReader {
protected $_current_code_annexe;
protected $_current_location_id;
protected $_current_exemplaire;
protected $_is_reservable = false;
public function endTitleId($content) {
......@@ -35,7 +37,10 @@ class Class_WebService_SIGB_Dynix_TitleInfoResponseReader extends Class_WebServi
public function endItemId($content) {
$this->_current_exemplaire = (new Class_WebService_SIGB_Exemplaire($content))->setCodeBarre($content);
$this->_current_exemplaire = (new Class_WebService_SIGB_Exemplaire($content))
->setCodeBarre($content)
->setReservable($this->_is_reservable);
$this->_notice->addExemplaire($this->_current_exemplaire);
}
......@@ -51,6 +56,19 @@ class Class_WebService_SIGB_Dynix_TitleInfoResponseReader extends Class_WebServi
if ($data == 'INTRANSIT')
$this->_current_exemplaire->setDisponibiliteEnTransit();
$this->_current_location_id = $data;
}
public function endHomeLocationId($data) {
if ($this->_current_location_id == $data)
$this->_current_exemplaire->setDisponibiliteLibre();
}
public function endHoldable($data) {
$this->_is_reservable = ($data == 'true');
}
}
......
......@@ -64,9 +64,85 @@ class DynixFixtures {
<fixedTimeBooking>false</fixedTimeBooking>
</ItemInfo>
</CallInfo>
<CallInfo>
<libraryID>CRETMAC</libraryID>
<classificationID>ASIS</classificationID>
<callNumber>BD LAR</callNumber>
<numberOfCopies>1</numberOfCopies>
<ItemInfo>
<itemID>00580317</itemID>
<itemTypeID>1IMP</itemTypeID>
<currentLocationID>11ABD</currentLocationID>
<homeLocationID>11ABD</homeLocationID>
<chargeable>true</chargeable>
<fixedTimeBooking>false</fixedTimeBooking>
</ItemInfo>
</CallInfo>
</TitleInfo>
</LookupTitleInfoResponse>';
}
public static function xmlLookupTitleInfoHarryPotter() {
return '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LookupTitleInfoResponse xmlns="http://schemas.sirsidynix.com/symws/standard">
<TitleInfo>
<titleID>353917</titleID>
<TitleAvailabilityInfo>
<totalCopiesAvailable>3</totalCopiesAvailable>
<libraryWithAvailableCopies>Créteil : Maison des Arts</libraryWithAvailableCopies>
<libraryWithAvailableCopies>Créteil : Bibliobus</libraryWithAvailableCopies>
<libraryWithAvailableCopies>Limeil-Brévannes</libraryWithAvailableCopies>
<totalResvCopiesAvailable>0</totalResvCopiesAvailable>
<locationOfFirstAvailableItem>02MFILM</locationOfFirstAvailableItem>
<holdable>false</holdable>
<bookable>false</bookable>
</TitleAvailabilityInfo>
<CallInfo>
<libraryID>CRETMAC</libraryID>
<classificationID>ASIS</classificationID>
<callNumber>520 HAR</callNumber>
<numberOfCopies>1</numberOfCopies>
<ItemInfo>
<itemID>00580322</itemID>
<itemTypeID>1MUS</itemTypeID>
<currentLocationID>02MFILM</currentLocationID>
<homeLocationID>02MFILM</homeLocationID>
<chargeable>true</chargeable>
<fixedTimeBooking>false</fixedTimeBooking>
</ItemInfo>
</CallInfo>
<CallInfo>
<libraryID>CRETBUS</libraryID>
<classificationID>ASIS</classificationID>
<callNumber>520 HAR</callNumber>
<numberOfCopies>1</numberOfCopies>
<ItemInfo>
<itemID>00580317</itemID>
<itemTypeID>1MUS</itemTypeID>
<currentLocationID>07MFILM</currentLocationID>
<homeLocationID>07MFILM</homeLocationID>
<chargeable>true</chargeable>
<fixedTimeBooking>false</fixedTimeBooking>
</ItemInfo>
</CallInfo>
<CallInfo>
<libraryID>LB</libraryID>
<classificationID>ASIS</classificationID>
<callNumber>8.1 HAR</callNumber>
<numberOfCopies>1</numberOfCopies>
<ItemInfo>
<itemID>00594173</itemID>
<itemTypeID>1MUS</itemTypeID>
<currentLocationID>09JENR</currentLocationID>
<homeLocationID>09JENR</homeLocationID>
<chargeable>true</chargeable>
<fixedTimeBooking>false</fixedTimeBooking>
</ItemInfo>
</CallInfo>
</TitleInfo>
</LookupTitleInfoResponse>';
}
}
......
......@@ -51,6 +51,8 @@ abstract class DynixTestCase extends Storm_Test_ModelTestCase {
public function setUp() {
parent::setUp();
Class_Profil::getCurrentProfil()->setCfgNotice(['exemplaires' => []]);
$this->_mock_web_client = Storm_Test_ObjectWrapper::mock();
$this->_service = Class_WebService_SIGB_Dynix_Service::newInstance()
......@@ -68,7 +70,6 @@ class DynixGetNoticeLeCombatOrdinaire extends DynixTestCase {
public function setUp() {
parent::setUp();
Class_Profil::getCurrentProfil()->setCfgNotice(['exemplaires' => []]);
$this->_mock_web_client
->whenCalled('open_url')
->with('http://www.infocom94.fr:8080/capcvm/rest/standard/lookupTitleInfo?clientID=myid&titleID=233823&includeItemInfo=true&includeAvailabilityInfo=true')
......@@ -92,8 +93,8 @@ class DynixGetNoticeLeCombatOrdinaire extends DynixTestCase {
/** @test */
public function getExemplairesShouldReturnAnArrayWithSizeTwo() {
$this->assertEquals(2, count($this->_notice->getExemplaires()));
public function getExemplairesShouldReturnAnArrayWithSizeThree() {
$this->assertEquals(3, count($this->_notice->getExemplaires()));
}
......@@ -116,8 +117,8 @@ class DynixGetNoticeLeCombatOrdinaire extends DynixTestCase {
/** @test */
public function secondExemplaireCodeAnnexeShouldBeALFAX1() {
$this->assertEquals('ALFAX1', $this->_notice->exemplaireAt(1)->getCodeAnnexe());
public function firstExemplaireShouldBeReservable() {
$this->assertTrue($this->_notice->exemplaireAt(0)->isReservable());
}
......@@ -128,11 +129,55 @@ class DynixGetNoticeLeCombatOrdinaire extends DynixTestCase {
}
/** @test */
public function secondExemplaireCodeAnnexeShouldBeALFAX1() {
$this->assertEquals('ALFAX1', $this->_notice->exemplaireAt(1)->getCodeAnnexe());
}
/** @test */
public function secondExemplairDisponibiliteShouldBeEnTransit() {
$this->assertEquals(Class_WebService_SIGB_Exemplaire::DISPO_TRANSIT,
$this->_notice->exemplaireAt(1)->getDisponibilite());
}
/** @test */
public function secondExemplaireShouldBeReservable() {
$this->assertTrue($this->_notice->exemplaireAt(1)->isReservable());
}
/** @test */
public function thirdExemplaireDisponibiliteShouldBeDisponible() {
$this->assertEquals(Class_WebService_SIGB_Exemplaire::DISPO_LIBRE,
$this->_notice->exemplaireAt(2)->getDisponibilite());
}
}
class DynixGetNoticeHarryPotter extends DynixTestCase {
protected $_notice;
public function setUp() {
parent::setUp();
$this->_mock_web_client
->whenCalled('open_url')
->with('http://www.infocom94.fr:8080/capcvm/rest/standard/lookupTitleInfo?clientID=myid&titleID=353917&includeItemInfo=true&includeAvailabilityInfo=true')
->answers(DynixFixtures::xmlLookupTitleInfoHarryPotter())
->beStrict();
$this->_notice = $this->_service->getNotice('353917');
}
/** @test */
public function firstExemplaireShouldNotBeReservable() {
$this->assertFalse($this->_notice->exemplaireAt(0)->isReservable());
}
}
......
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