From 7deb15e383b2698e8211d915883746bcafefc837 Mon Sep 17 00:00:00 2001 From: Ghislain Loas <ghislo@sandbox.pergame.net> Date: Wed, 25 Nov 2015 10:47:10 +0100 Subject: [PATCH] dev #30973 Dilicom update status only called on loan book --- .../WebService/BibNumerique/Dilicom/Hub.php | 7 ++-- .../modules/AbstractControllerTestCase.php | 7 ++-- .../BibNumeriqueControllerDilicomTest.php | 28 +++++++++++++-- tests/fixtures/DilicomFixtures.php | 36 +++++++++++++++++++ .../ZendAfi/View/Helper/RenderAlbumTest.php | 6 ---- 5 files changed, 70 insertions(+), 14 deletions(-) diff --git a/library/Class/WebService/BibNumerique/Dilicom/Hub.php b/library/Class/WebService/BibNumerique/Dilicom/Hub.php index ee4e8d88ffc..00f3692e715 100644 --- a/library/Class/WebService/BibNumerique/Dilicom/Hub.php +++ b/library/Class/WebService/BibNumerique/Dilicom/Hub.php @@ -41,9 +41,10 @@ class Class_WebService_BibNumerique_Dilicom_Hub extends Class_WebService_Abstrac public function updateStatus($album) { $content = $this->getLoanStatus($album); - if (isset($content->loanResponseLine[0]) - && ($simultaneous_users_remaining = $content->loanResponseLine[0]->nus1)) { + if (isset($content->loanResponseLine[0])) { + $simultaneous_users_remaining = $content->loanResponseLine[0]->nus1; $item = $album->getItems()[0]; + $item->setLoanCount($album->getUsageConstraints()->getLoanMaxNumberOfUsers() - $simultaneous_users_remaining); $item->setQuantity($album->getUsageConstraints()->getLoanQuantity() - $content->loanResponseLine[0]->nta); $item->save(); @@ -125,6 +126,8 @@ class Class_WebService_BibNumerique_Dilicom_Hub extends Class_WebService_Abstrac return (object) ['link' => (object) ['url' => $loan->getLoanLink()], 'returnMessage' => []]; + $this->updateStatus($album); + if (!$album->getUsageConstraints()->hasSimultaneousLoanRemaining()) return (object) ['returnMessage' => [$this->_('Emprunt impossible. Le nombre d\'emprunts simultanés est atteint.')]]; diff --git a/tests/application/modules/AbstractControllerTestCase.php b/tests/application/modules/AbstractControllerTestCase.php index a9d088908c8..29948e1cf7b 100644 --- a/tests/application/modules/AbstractControllerTestCase.php +++ b/tests/application/modules/AbstractControllerTestCase.php @@ -276,13 +276,14 @@ abstract class AbstractControllerTestCase extends Zend_Test_PHPUnit_ControllerTe return is_array($data) && isset($data[ZendAfi_Controller_Action_Helper_FlashMessenger::NOTIFICATION]); }); - foreach($messages as $message){ - if (false!==strpos($message[ZendAfi_Controller_Action_Helper_FlashMessenger::NOTIFICATION]['message'], + foreach($messages as $flash_message){ + if (false!==strpos($flash_message[ZendAfi_Controller_Action_Helper_FlashMessenger::NOTIFICATION]['message'], $value)) return; } - $this->fail("Flash messenger does not contains: \n".$value."\nbut:\n".implode('. ', $messages)."\n".$message); + $content = print_r($messages, true); + $this->fail("Flash messenger does not contains: \n".$value."\nbut:\n".$content."\n".$message); } diff --git a/tests/application/modules/opac/controllers/BibNumeriqueControllerDilicomTest.php b/tests/application/modules/opac/controllers/BibNumeriqueControllerDilicomTest.php index a0aa0de6477..1d2f0172f7f 100644 --- a/tests/application/modules/opac/controllers/BibNumeriqueControllerDilicomTest.php +++ b/tests/application/modules/opac/controllers/BibNumeriqueControllerDilicomTest.php @@ -85,7 +85,12 @@ abstract class BibNumeriqueContollerDilicomTestCase extends AbstractControllerTe $this->_http ->whenCalled('setAuth') ->with('afi-bib', 'secretPassword') - ->answers(null); + ->answers(null) + + ->whenCalled('open_url') + ->with('https://pnb-test.centprod.com/v2/pnb-numerique/json/getLoanStatus?glnContractor=123456789&orderLineId[0]=x321') + ->answers(DilicomFixtures::getLoanStatusResponse()); + $this->_time_source = new TimeSourceForTest('2014-05-02 14:14:14'); Class_WebService_BibNumerique_Dilicom_Hub::setTimeSource($this->_time_source); @@ -456,7 +461,12 @@ abstract class BibNumeriqueContollerDilicomSecondUserTestCase extends BibNumeriq class BibNumeriqueControllerDilicomLoanBookActionWithASecondUserAndLoanCountExcededTest extends BibNumeriqueContollerDilicomSecondUserTestCase { public function setUp() { parent::setUp(); - Class_Album_Item::find(1)->setLoanCount(40)->save(); + + $this->_http + ->whenCalled('open_url') + ->with('https://pnb-test.centprod.com/v2/pnb-numerique/json/getLoanStatus?glnContractor=123456789&orderLineId[0]=x321') + ->answers(DilicomFixtures::getLoanStatusNoSimultaneousLoanLeftResponse()); + $this->dispatch('/bib-numerique/loan-book/id/3', true); } @@ -541,11 +551,23 @@ class BibNumeriqueControllerDilicomLoanBookActionUserLoanCountExceededTest exten class BibNumeriqueControllerDilicomLoanBookActionWithASecondUserAndQuantityExcededTest extends BibNumeriqueContollerDilicomSecondUserTestCase { public function setUp() { parent::setUp(); - Class_Album_Item::find(1)->setQuantity(50)->save(); + $this->_http + ->whenCalled('open_url') + ->with('https://pnb-test.centprod.com/v2/pnb-numerique/json/getLoanStatus?glnContractor=123456789&orderLineId[0]=x321') + ->answers(DilicomFixtures::getLoanStatusNoQuantityLeftResponse()); + $this->dispatch('/bib-numerique/loan-book/id/3', true); } + + + /** @test */ + public function albumShouldHaveBeenUpdateThroughHubGetLoanStatus() { + $this->assertContains('getLoanStatus', $this->_http->getFirstAttributeForLastCallOn('open_url')); + } + + /** @test */ public function responseShouldRedirectToReferer() { $this->assertRedirectTo('/recherche/viewnotice/id/3'); diff --git a/tests/fixtures/DilicomFixtures.php b/tests/fixtures/DilicomFixtures.php index d71f9ffc70d..e81c848660d 100644 --- a/tests/fixtures/DilicomFixtures.php +++ b/tests/fixtures/DilicomFixtures.php @@ -97,6 +97,42 @@ class DilicomFixtures { } + public static function getLoanStatusNoQuantityLeftResponse() { + return '{ + "date" : "2014-08-14T11:32:12.786+02:00", + "returnStatus" : "OK", + "returnMessage" : [ ], + "loanResponseLine" : [ { + "returnStatus" : "OK", + "orderLineId" : "537119f5975a1d3260801864", + "nta" : 0, + "nus1" : 5, + "nus2" : 30, + "beginDate" : "2014-05-12T20:59:03+02:00", + "endDate" : "2015-05-12T20:59:03+02:00" + } ] +}'; + } + + + public static function getLoanStatusNoSimultaneousLoanLeftResponse() { + return '{ + "date" : "2014-08-14T11:32:12.786+02:00", + "returnStatus" : "OK", + "returnMessage" : [ ], + "loanResponseLine" : [ { + "returnStatus" : "OK", + "orderLineId" : "537119f5975a1d3260801864", + "nta" : 24, + "nus1" : 0, + "nus2" : 30, + "beginDate" : "2014-05-12T20:59:03+02:00", + "endDate" : "2015-05-12T20:59:03+02:00" + } ] +}'; + } + + public static function getLoanStatusErrorResponse() { return '{ "date" : "2014-08-14T11:32:12.786+02:00", diff --git a/tests/library/ZendAfi/View/Helper/RenderAlbumTest.php b/tests/library/ZendAfi/View/Helper/RenderAlbumTest.php index d3321c76297..73e177480e4 100644 --- a/tests/library/ZendAfi/View/Helper/RenderAlbumTest.php +++ b/tests/library/ZendAfi/View/Helper/RenderAlbumTest.php @@ -379,10 +379,4 @@ class ZendAfi_View_Helper_RenderAlbumDilicomPNBTest extends ZendAfi_View_Helper_ '//a[contains(@href, "/bib-numerique/loan-book-ajax/id/3")]', 'Emprunter le livre au format EPUB'); } - - - /** @test */ - public function albumShouldHaveBeenUpdateThroughHubGetLoanStatus() { - $this->assertContains('getLoanStatus', $this->_http->getFirstAttributeForLastCallOn('open_url')); - } } -- GitLab