Skip to content
Snippets Groups Projects
Commit 33fd6579 authored by Patrick Barroca's avatar Patrick Barroca :grin:
Browse files

hotline #64528 : maintain Nanook API without siteId

parent 37e08b5a
Branches
Tags
3 merge requests!2337Master,!2336Stable,!2332Hotline#64528 regression master choix du site de retrait gresivaudan
Pipeline #2440 passed with stage
in 20 minutes and 49 seconds
......@@ -22,6 +22,7 @@ class Class_Webservice_SIGB_Nanook_Service extends Class_WebService_SIGB_Abstrac
protected
$_provide_suggest = false,
$_provide_pickup_locations = null,
$_pickup_locations_params = null,
$_error_codes = [];
......@@ -338,13 +339,29 @@ class Class_Webservice_SIGB_Nanook_Service extends Class_WebService_SIGB_Abstrac
if (null !== $this->_provide_pickup_locations)
return $this->_provide_pickup_locations;
// API with siteId
$result = $this->ilsdiAction('GetPickupLocation',
['bibId' => 0,
'patronId' => 0,
'siteId' => 0],
'error', '');
return $this->_provide_pickup_locations = !$this->_isNetworkError($result);
if (!$this->_isNetworkError($result)) {
$this->_pickup_locations_params = new PickupLocationsParamsWithSiteId();
return $this->_provide_pickup_locations = true;
}
// API without siteId
$result = $this->ilsdiAction('GetPickupLocation',
['bibId' => 0,
'patronId' => 0],
'error', '');
if ($this->_isNetworkError($result))
return $this->_provide_pickup_locations = false;
$this->_pickup_locations_params = new PickupLocationsParams();
return $this->_provide_pickup_locations = true;
}
......@@ -360,7 +377,7 @@ class Class_Webservice_SIGB_Nanook_Service extends Class_WebService_SIGB_Abstrac
'patronId' => $user->getIdSigb(),
'siteId' => $item->getCodifAnnexe()->getIdOrigine()];
$xml = $this->httpGet($params);
$xml = $this->httpGet($this->_pickup_locations_params->paramsFor($user, $item));
if ($this->_getTagData($xml, 'error'))
return [];
......@@ -368,4 +385,24 @@ class Class_Webservice_SIGB_Nanook_Service extends Class_WebService_SIGB_Abstrac
->read($xml)
->getLocations();
}
}
class PickupLocationsParams {
public function paramsFor($user, $item) {
return ['service' => 'GetPickupLocation',
'bibId' => $item->getIdOrigine(),
'patronId' => $user->getIdSigb()];
}
}
class PickupLocationsParamsWithSiteId extends PickupLocationsParams {
public function paramsFor($user, $item) {
$params = parent::paramsFor($user, $item);
$params['siteId'] = $item->getCodifAnnexe()->getIdOrigine();
return $params;
}
}
\ No newline at end of file
......@@ -1175,7 +1175,64 @@ class NanookPickupLocationsInactiveTest extends NanookTestCase {
class NanookPickupLocationsActiveTest extends NanookTestCase {
class NanookPickupLocationsActiveWithoutSiteIdTest extends NanookTestCase {
public function setUp() {
parent::setUp();
$map =
[// API with siteId answers errors
'/bibId/0/patronId/0/siteId/0' => NanookFixtures::htmlTomcatError(),
'/bibId/2/patronId/9/siteId/11' => NanookFixtures::htmlTomcatError(),
'/bibId/999/patronId/9/siteId/34' => NanookFixtures::htmlTomcatError(),
// API without siteId answers ilsdi
'/bibId/0/patronId/0' => NanookFixtures::pickupLocationsPingAnswer(),
'/bibId/2/patronId/9' => NanookFixtures::pickupLocationsOkAnswer(),
'/bibId/999/patronId/9' => NanookFixtures::pickupLocationsErrorAnswer()];
foreach($map as $url => $answer) {
$this->_mock_web_client
->whenCalled('open_url')
->with('http://localhost:8080/afi_Nanook/ilsdi/service/GetPickupLocation' . $url)
->answers($answer);
}
$this->_mock_web_client->beStrict();
}
/** @test */
public function shouldProvidePickupLocations() {
$this->assertTrue($this->_service->providesPickupLocations());
}
/** @test */
public function locationsForRecord2AndPatron9ShouldBeFirstAndSecondLibrary() {
$user = (new Class_Entity)->setIdSigb(9);
$item = (new Class_Entity)
->setIdOrigine(2)
->setCodifAnnexe((new Class_Entity)->setIdOrigine(11));
$this->assertEquals([1 => 'First library', 2 => 'Second library'],
$this->_service->pickupLocationsFor($user, $item));
}
/** @test */
public function locationsForRecord999AndPatron9ShouldBeEmpty() {
$user = (new Class_Entity)->setIdSigb(9);
$item = (new Class_Entity)
->setIdOrigine(999)
->setCodifAnnexe((new Class_Entity)->setIdOrigine(34));
$this->assertEquals([], $this->_service->pickupLocationsFor($user, $item));
}
}
class NanookPickupLocationsActiveWithSiteIdTest extends NanookTestCase {
public function setUp() {
parent::setUp();
$this->_mock_web_client
......
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