diff --git a/VERSIONS_HOTLINE/92518 b/VERSIONS_HOTLINE/92518 new file mode 100644 index 0000000000000000000000000000000000000000..ad90847d9a3ee3863ce3df869c15cfac977f4621 --- /dev/null +++ b/VERSIONS_HOTLINE/92518 @@ -0,0 +1 @@ + - ticket #92518 : SIGB PMB : correction de l'affichage des messages d'erreur de prolongation \ No newline at end of file diff --git a/library/Class/WebService/SIGB/PMB/Service.php b/library/Class/WebService/SIGB/PMB/Service.php index 132b94c5592b60e19be93048fcdffc24d8cfd33d..120e7afb3b61459b0695e14834afc8d5e81450d2 100644 --- a/library/Class/WebService/SIGB/PMB/Service.php +++ b/library/Class/WebService/SIGB/PMB/Service.php @@ -88,13 +88,13 @@ class Class_Webservice_SIGB_PMB_Service extends Class_WebService_SIGB_AbstractSe $exemplaire->getIdOrigine()]); $result = (array) $this->_getJsonData($json, 'result'); - if(!$result) - return ['status' => false, 'erreur' => $this->_('Réservation impossible : le service de réservation PMB via webservice est indisponible')]; + if (!$result) + return $this->_error($this->_('Réservation impossible : le service de réservation PMB via webservice est indisponible')); if(isset($result['error'])) - return ['status' => false, 'erreur' => $this->_('Réservation impossible : Vous avez déjà réservé cette exemplaire')]; + return $this->_error($this->_('Réservation impossible : Vous avez déjà réservé cette exemplaire')); - return true; + return $this->_success(); } @@ -102,16 +102,23 @@ class Class_Webservice_SIGB_PMB_Service extends Class_WebService_SIGB_AbstractSe $session_token = $this->openSessionForUser($user); $json = $this->httpPost('pmbesOPACEmpr_delete_resa', [$session_token, $reservation_id]); - return true; + return $this->_success(); } public function prolongerPret($user, $pret_id) { $session_token = $this->openSessionForUser($user); - if(!$json = $this->httpPost('pmbesSelfServices_self_renew', [$session_token, $pret_id])) - return ['statut' => false, 'erreur' => $this->_('Prolongation impossible : le service de prolongation PMB via webservice est indisponible')]; + if((!$json = $this->httpPost('pmbesSelfServices_self_renew', [$session_token, $pret_id])) + || (!$result = json_decode($json, true))) + return $this->_error($this->_('Prolongation impossible : le service de prolongation PMB via webservice est indisponible')); - return true; + if (array_key_exists('result', $result) + && is_array($result['result']) + && array_key_exists('message', $result['result']) + && $message = $result['result']['message']) + return $this->_error($message); + + return $this->_success(); } @@ -339,4 +346,3 @@ class JsonWebClient { } } -?> \ No newline at end of file diff --git a/tests/library/Class/WebService/SIGB/PMBTest.php b/tests/library/Class/WebService/SIGB/PMBTest.php index 6e950e2c8e5adb18c3092803641ea3359b3d46e6..33c7fba343f864628c9d0eda83bb436455695645 100644 --- a/tests/library/Class/WebService/SIGB/PMBTest.php +++ b/tests/library/Class/WebService/SIGB/PMBTest.php @@ -54,7 +54,7 @@ abstract class PMBTestCase extends ModelTestCase { ->whenCalled('httpPost') ->with('pmbesSelfServices_self_renew', ['faf3404e9d51b48e47745556789b55401', 15]) - ->answers(null) + ->answers('{"id":1,"result":{"status":1,"message":"Prolongation non activ\u00e9e","transaction_date":"20190516 164241","title":"7d918cd04e21cb62d886dea49a6b711314","due_date":"20190516 164241"},"error":null}') ->whenCalled('httpPost') ->with('pmbesOPACEmpr_add_resa', ['faf3404e9d51b48e47745556789b55401', '456789']) @@ -209,19 +209,23 @@ class PMBServiceTest extends PMBTestCase { /** @test */ - public function renewLoansShouldReturnError() { - $this->assertContains(false, $this->_service->prolongerPret($this->_paul, 15)); + public function renewLoansShouldReturnMessageProlongationNonActive() { + $this->assertEquals(['statut' => false, + 'erreur' => 'Prolongation non activée'], + $this->_service->prolongerPret($this->_paul, 15)); } /** @test */ public function bookingItemShouldReturnSuccess() { - $this->assertTrue($this->_service->reserverExemplaire($this->_paul, $this->_le_kiosque, '000018')); + $this->assertEquals(['statut' => true, 'erreur' => ''], + $this->_service->reserverExemplaire($this->_paul, $this->_le_kiosque, '000018')); } /** @test */ public function cancelBookingShouldReturnSuccess() { - $this->assertTrue($this->_service->supprimerReservation($this->_paul, 456)); + $this->assertEquals(['statut' => true, 'erreur' => ''], + $this->_service->supprimerReservation($this->_paul, 456)); } } \ No newline at end of file