From 0cf39d1c12de0784c824776e6c5640fb98daef9b Mon Sep 17 00:00:00 2001 From: Ghislain Loas <ghislo@sandbox.pergame.net> Date: Wed, 25 Nov 2015 11:12:16 +0100 Subject: [PATCH] dev #30973 Update Dilicom item status after loan + add update all script --- .../WebService/BibNumerique/Dilicom/Hub.php | 8 +++++--- scripts/dilicom_update_all.php | 10 ++++++++++ .../BibNumeriqueControllerDilicomTest.php | 20 +++++++++++++++++++ tests/fixtures/DilicomFixtures.php | 18 +++++++++++++++++ 4 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 scripts/dilicom_update_all.php diff --git a/library/Class/WebService/BibNumerique/Dilicom/Hub.php b/library/Class/WebService/BibNumerique/Dilicom/Hub.php index 00f3692e715..78f93afe621 100644 --- a/library/Class/WebService/BibNumerique/Dilicom/Hub.php +++ b/library/Class/WebService/BibNumerique/Dilicom/Hub.php @@ -162,11 +162,13 @@ class Class_WebService_BibNumerique_Dilicom_Hub extends Class_WebService_Abstrac $content = json_decode($response); - $loan->setLoanLink($content->link->url)->save(); - - if($content->returnMessage) + if ($content->returnMessage) { $loan->delete(); + return $content; + } + $loan->setLoanLink($content->link->url)->save(); + $this->updateStatus($album); return $content; } diff --git a/scripts/dilicom_update_all.php b/scripts/dilicom_update_all.php new file mode 100644 index 00000000000..0975a7bcf1c --- /dev/null +++ b/scripts/dilicom_update_all.php @@ -0,0 +1,10 @@ +<?php +error_reporting(E_ERROR | E_PARSE); +require(__DIR__.'/../console.php'); +$hub = new Class_WebService_BibNumerique_Dilicom_Hub(); +$items = Class_Album_Item::findAll(); +foreach($items as $item) { + $content = $hub->updateStatus($item->getAlbum()); + echo 'updated [' . $content->returnStatus . '] ' .$item->getAlbum()->getTitre()."\n"; +} +?> \ No newline at end of file diff --git a/tests/application/modules/opac/controllers/BibNumeriqueControllerDilicomTest.php b/tests/application/modules/opac/controllers/BibNumeriqueControllerDilicomTest.php index 1d2f0172f7f..d647dec93b9 100644 --- a/tests/application/modules/opac/controllers/BibNumeriqueControllerDilicomTest.php +++ b/tests/application/modules/opac/controllers/BibNumeriqueControllerDilicomTest.php @@ -322,10 +322,24 @@ class BibNumeriqueControllerDilicomLoanBookActionTest extends BibNumeriqueContol Class_AdminVar::set('DILICOM_PNB_LOAN_COUNT_LIMIT', 0); + $update_status_url = 'https://pnb-test.centprod.com/v2/pnb-numerique/json/getLoanStatus?glnContractor=123456789&orderLineId[0]=x321'; + $this->_http ->whenCalled('open_url') ->with('https://pnb-test.centprod.com/v2/pnb-numerique/json/loanBook?glnContractor=123456789&orderLineId=x321&accessMedium=DOWNLOAD&glnColl=afi-bib&loanerColl=2345889&localization=EX_SITU&loanEndDate=2014-08-10T14%3A14%3A14%2B0200&ean13=435465&loanId=1') ->answers(DilicomFixtures::loanBookResponse()) + + + ->whenCalled('open_url') + ->with($update_status_url) + ->willDo(function() use ($update_status_url) + { + $this->_http + ->whenCalled('open_url') + ->with($update_status_url) + ->answers(DilicomFixtures::getLoanStatusAfterLoanResponse()); + return DilicomFixtures::getLoanStatusResponse(); + }) ->beStrict(); $this->dispatch('/bib-numerique/loan-book/id/3', true); @@ -348,6 +362,12 @@ class BibNumeriqueControllerDilicomLoanBookActionTest extends BibNumeriqueContol public function loanUrlShouldHaveBeenSaved() { $this->assertEquals('https://pnb-dilicom.centprod.com/v2//link/3025594195810/LOAN/WIKI001/9782021153057-NUMOIY0785CYO0IGCV83DE9DOAOC1Y1O.do', Class_Loan_Pnb::findFirstBy(['record_origin_id' => 'Dilicom-88817216'])->getLoanLink()); } + + + /** @test */ + public function itemQuantityShouldEqualsTwentySeven() { + $this->assertEquals(27, $this->book->getItems()[0]->getQuantity()); + } } diff --git a/tests/fixtures/DilicomFixtures.php b/tests/fixtures/DilicomFixtures.php index e81c848660d..2672ab3fc29 100644 --- a/tests/fixtures/DilicomFixtures.php +++ b/tests/fixtures/DilicomFixtures.php @@ -97,6 +97,24 @@ class DilicomFixtures { } + public static function getLoanStatusAfterLoanResponse() { + return '{ + "date" : "2014-08-14T11:32:12.786+02:00", + "returnStatus" : "OK", + "returnMessage" : [ ], + "loanResponseLine" : [ { + "returnStatus" : "OK", + "orderLineId" : "537119f5975a1d3260801864", + "nta" : 23, + "nus1" : 4, + "nus2" : 30, + "beginDate" : "2014-05-12T20:59:03+02:00", + "endDate" : "2015-05-12T20:59:03+02:00" + } ] +}'; + } + + public static function getLoanStatusNoQuantityLeftResponse() { return '{ "date" : "2014-08-14T11:32:12.786+02:00", -- GitLab