diff --git a/library/Class/WebService/SIGB/AbstractRESTService.php b/library/Class/WebService/SIGB/AbstractRESTService.php index 20b8edf2eb0909b560079b5dc2e9cfc64de69612..e4d062ab02309a92caa24fbd8324a66cc7d3de88 100644 --- a/library/Class/WebService/SIGB/AbstractRESTService.php +++ b/library/Class/WebService/SIGB/AbstractRESTService.php @@ -188,6 +188,26 @@ abstract class Class_WebService_SIGB_AbstractRESTService extends Class_WebServic } + /** + * @param array $params + */ + public function ilsdiRenewLoan($params) { + $params = array_merge(array('service' => 'RenewLoan'), $params); + + try { + $xml = $this->httpGet($params); + } catch (Exception $e) { + return $this->_getNetworkError(); + } + + if (0 === strpos($xml, '<html>')) + return $this->_getNetworkError(); + + if ('' != $this->_getTagData($xml, 'error')) + return $this->_error('Prolongation impossible'); + + return $this->_success(); + } /** diff --git a/library/Class/WebService/SIGB/BiblixNet/Service.php b/library/Class/WebService/SIGB/BiblixNet/Service.php index beed5dc18b2e4dd312e7d3f030c951f9384ab303..3adc80a3fcdcb008dae8581b36feb0421b4a4ca1 100644 --- a/library/Class/WebService/SIGB/BiblixNet/Service.php +++ b/library/Class/WebService/SIGB/BiblixNet/Service.php @@ -80,7 +80,11 @@ class Class_Webservice_SIGB_BiblixNet_Service extends Class_WebService_SIGB_Abst * @param int $pret_id * @return array */ - public function prolongerPret($user, $pret_id) {} + public function prolongerPret($user, $pret_id) { + return $this->ilsdiRenewLoan(array( + 'patronId' => $user->getIdSigb(), + 'itemId' => $pret_id)); + } /** diff --git a/library/Class/WebService/SIGB/Nanook/Service.php b/library/Class/WebService/SIGB/Nanook/Service.php index b967872e9a4fb1d508f2beaeaee5956a623f7d43..0f2edd6a9c389cc4b5e9da758081863d10cebf6c 100644 --- a/library/Class/WebService/SIGB/Nanook/Service.php +++ b/library/Class/WebService/SIGB/Nanook/Service.php @@ -93,21 +93,9 @@ class Class_Webservice_SIGB_Nanook_Service extends Class_WebService_SIGB_Abstrac * @return array */ public function prolongerPret($user, $pret_id) { - try { - $xml = $this->httpGet(array('service' => 'RenewLoan', - 'patronId' => $user->getIdSigb(), - 'itemId' => $pret_id)); - } catch (Exception $e) { - return $this->_getNetworkError(); - } - - if (0 === strpos($xml, '<html>')) - return $this->_getNetworkError(); - - if ('' != $this->_getTagData($xml, 'error')) - return $this->_error('Prolongation impossible'); - - return $this->_success(); + return $this->ilsdiRenewLoan(array( + 'patronId' => $user->getIdSigb(), + 'itemId' => $pret_id)); } diff --git a/tests/library/Class/WebService/SIGB/BiblixNetFixtures.php b/tests/library/Class/WebService/SIGB/BiblixNetFixtures.php index 365725c6d9e890b828ffcfd9f6bfcd4a79355d19..0c2eb07edae766a91e10ac6bad9f188d9eede799 100644 --- a/tests/library/Class/WebService/SIGB/BiblixNetFixtures.php +++ b/tests/library/Class/WebService/SIGB/BiblixNetFixtures.php @@ -139,4 +139,11 @@ class BiblixNetFixtures { return '<?xml version="1.0" encoding="UTF-8"?> <CancelHold></CancelHold>'; } + + + /** @return string */ + public static function xmlRenewLoanSuccess() { + return '<?xml version="1.0" encoding="UTF-8"?> + <RenewLoan></RenewLoan>'; + } } diff --git a/tests/library/Class/WebService/SIGB/BiblixNetTest.php b/tests/library/Class/WebService/SIGB/BiblixNetTest.php index 0007b2ac1255fa4085936156f2ec3de59624387c..df4905470cb6d8b97c09476949388ee6f7e53f9a 100644 --- a/tests/library/Class/WebService/SIGB/BiblixNetTest.php +++ b/tests/library/Class/WebService/SIGB/BiblixNetTest.php @@ -267,6 +267,22 @@ class BiblixNetOperationsTest extends BiblixNetTestCase { '987' )); } + + + /** @test */ + public function prolongerPretWithoutErrorShouldReturnSuccess() { + $this->_mock_web_client + ->whenCalled('open_url') + ->with('http://mediathequewormhout.biblixnet.com/exporte_afi/?service=RenewLoan&patronId=4&itemId=987') + ->answers(BiblixNetFixtures::xmlRenewLoanSuccess()) + ->beStrict(); + + $this->assertEquals(array('statut' => true, 'erreur' => ''), + $this->_service->prolongerPret( + Class_Users::getLoader()->newInstance()->setIdSigb('4'), + '987' + )); + } }