From 20d68862ecfddd0de49c33f148b2b8b6e4723dec Mon Sep 17 00:00:00 2001
From: Laurent Laffont <llaffont@afi-sa.fr>
Date: Tue, 3 Sep 2019 16:07:59 +0200
Subject: [PATCH] dev #90319 : Orphee ILS : display end hold date in holds
 table

---
 cosmogramme/VERSIONS_WIP/90319                |  1 +
 .../SIGB/Orphee/GetLstRsvResponseReader.php   | 21 ++++++++++++++--
 .../Class/WebService/SIGB/OrpheeFixtures.php  | 24 ++++++++++++++++++
 .../WebService/SIGB/OrpheeServiceTest.php     | 25 ++++++++++++++-----
 4 files changed, 63 insertions(+), 8 deletions(-)
 create mode 100644 cosmogramme/VERSIONS_WIP/90319

diff --git a/cosmogramme/VERSIONS_WIP/90319 b/cosmogramme/VERSIONS_WIP/90319
new file mode 100644
index 00000000000..a2836c30038
--- /dev/null
+++ b/cosmogramme/VERSIONS_WIP/90319
@@ -0,0 +1 @@
+ - ticket #90319 : SIGB Orphée : affichage de la date de fin de réservation dans le tableau des réservations
\ No newline at end of file
diff --git a/library/Class/WebService/SIGB/Orphee/GetLstRsvResponseReader.php b/library/Class/WebService/SIGB/Orphee/GetLstRsvResponseReader.php
index 106e0f054cc..6c90e6c3c69 100644
--- a/library/Class/WebService/SIGB/Orphee/GetLstRsvResponseReader.php
+++ b/library/Class/WebService/SIGB/Orphee/GetLstRsvResponseReader.php
@@ -20,6 +20,8 @@
  */
 
 class Class_WebService_SIGB_Orphee_GetLstRsvResponseReader extends Class_WebService_SIGB_AbstractXMLNoticeReader {
+  use Trait_Translator;
+
   /** @var Class_WebService_XMLParser */
   protected $_xml_parser;
 
@@ -57,6 +59,15 @@ class Class_WebService_SIGB_Orphee_GetLstRsvResponseReader extends Class_WebServ
   }
 
 
+  public function endDocument() {
+    if ($this->_date_fin)
+      $this->_etat = $this->_etat . ' ' . $this->_('jusqu\'au %s', $this->_date_fin);
+
+    $this->_current_reservation->setEtat($this->_etat);
+    $this->_date_fin = $this->_etat = '';
+  }
+
+
   public function endNo_Ntc($data) {
     $this->_current_reservation->setId(trim($data));
     $this->_current_reservation->getExemplaire()->setNoNotice(sprintf('frOr%010d', trim($data)));
@@ -92,7 +103,7 @@ class Class_WebService_SIGB_Orphee_GetLstRsvResponseReader extends Class_WebServ
   public function endSit($data) {
     $status = trim($data);
     if (!is_numeric($status)) {//compatibility with Orphée WS version < version K
-      $this->_current_reservation->setEtat($status);
+      $this->_etat = $status;
     }
 
     if ($status == 'affectée' || $status == '2')
@@ -100,10 +111,16 @@ class Class_WebService_SIGB_Orphee_GetLstRsvResponseReader extends Class_WebServ
   }
 
 
+  public function endDate_Fin($data) {
+    $this->_date_fin = $data;
+  }
+
+
   public function endLib_Sit($data) {
-    $this->_current_reservation->setEtat(trim($data));
+    $this->_etat = trim($data);
   }
 
+
   public function endRang($data) {
     $this->_current_reservation->setRang(trim($data));
   }
diff --git a/tests/library/Class/WebService/SIGB/OrpheeFixtures.php b/tests/library/Class/WebService/SIGB/OrpheeFixtures.php
index abaffd96125..3cadcc7ff08 100644
--- a/tests/library/Class/WebService/SIGB/OrpheeFixtures.php
+++ b/tests/library/Class/WebService/SIGB/OrpheeFixtures.php
@@ -623,6 +623,7 @@ renouvellement -->
       <cb></cb>
       <no_ntc><![CDATA[975467778]]></no_ntc>
       <no_dmt><![CDATA[790]]></no_dmt>
+      <date_fin><![CDATA[13/04/2019]]></date_fin>
       <sup><![CDATA[Livre]]></sup>
       <tit><![CDATA[Le singe bleu]]></tit>
       <auteur><![CDATA[Steinbeck, John (1902-1968)]]></auteur>
@@ -630,6 +631,17 @@ renouvellement -->
       <lib_sit><![CDATA[affectée]]></lib_sit>
       <sit><![CDATA[2]]></sit>
     </document>
+    <document>
+      <cb></cb>
+      <no_ntc><![CDATA[975467779]]></no_ntc>
+      <no_dmt><![CDATA[791]]></no_dmt>
+      <sup><![CDATA[Livre]]></sup>
+      <tit><![CDATA[A l\'Est d\'Eden]]></tit>
+      <auteur><![CDATA[Steinbeck, John (1902-1968)]]></auteur>
+      <editeur><![CDATA[Gallimard]]></editeur>
+      <lib_sit><![CDATA[affectée]]></lib_sit>
+      <sit><![CDATA[2]]></sit>
+    </document>
   </documents>
 </datas> ';
   }
@@ -706,6 +718,18 @@ renouvellement -->
       <auteur><![CDATA[Steinbeck, John (1902-1968)]]></auteur>
       <editeur><![CDATA[Gallimard]]></editeur>
       <lib_sit><![CDATA[affectée]]></lib_sit>
+      <date_fin><![CDATA[13/04/2019]]></date_fin>
+      <sit><![CDATA[2]]></sit>
+    </document>
+    <document>
+      <cb></cb>
+      <no_ntc><![CDATA[975467779]]></no_ntc>
+      <no_dmt><![CDATA[791]]></no_dmt>
+      <sup><![CDATA[Livre]]></sup>
+      <tit><![CDATA[A l\'Est d\'Eden]]></tit>
+      <auteur><![CDATA[Steinbeck, John (1902-1968)]]></auteur>
+      <editeur><![CDATA[Gallimard]]></editeur>
+      <lib_sit><![CDATA[affectée]]></lib_sit>
       <sit><![CDATA[2]]></sit>
     </document>
   </documents>
diff --git a/tests/library/Class/WebService/SIGB/OrpheeServiceTest.php b/tests/library/Class/WebService/SIGB/OrpheeServiceTest.php
index 253eafa7886..b5449ca15cf 100644
--- a/tests/library/Class/WebService/SIGB/OrpheeServiceTest.php
+++ b/tests/library/Class/WebService/SIGB/OrpheeServiceTest.php
@@ -294,6 +294,7 @@ class OrpheeServiceTestAutoConnectError extends OrpheeServiceTestCase {
   protected $_search_client;
   protected $_orphee;
 
+
   public function _beforeOrpheeServiceCreate(){
     $this->_search_client
       ->whenCalled('GetId')
@@ -921,8 +922,8 @@ class OrpheeServiceGetInfoUserCarteHenryDupontTest extends OrpheeServiceTestCase
 
 
   /** @test */
-  public function nbOfHoldsWaitingToBePulledShouldBeOne() {
-    $this->assertCount(1, $this->emprunteur->getHoldsWaitingToBePulled());
+  public function nbOfHoldsWaitingToBePulledShouldBeTwo() {
+    $this->assertCount(2, $this->emprunteur->getHoldsWaitingToBePulled());
   }
 
 
@@ -951,8 +952,8 @@ class OrpheeServiceGetInfoUserCarteHenryDupontTest extends OrpheeServiceTestCase
 
 
   /** @test */
-  public function getNbReservationsShouldAnswerFive() {
-    $this->assertEquals(5, $this->emprunteur->getNbReservations());
+  public function getNbReservationsShouldAnswerSix() {
+    $this->assertEquals(6, $this->emprunteur->getNbReservations());
   }
 
 
@@ -1175,8 +1176,20 @@ class OrpheeServiceGetInfoUserCarteHenryDupontTest extends OrpheeServiceTestCase
 
 
   /** @test */
-  public function fifthHoldGetEtatShouldReturnAffectee() {
-    $this->assertEquals('affectée', $this->emprunteur->getReservations()[4]->getEtat());
+  public function fifthHoldGetEtatShouldReturnAffecteeUntil13_04_2019() {
+    $this->assertEquals('affectée jusqu\'au 13/04/2019', $this->_reservations[4]->getEtat());
+  }
+
+
+  /** @test */
+  public function fifthHoldTitleShouldBeLeSingeBleu() {
+    $this->assertEquals('Le singe bleu', $this->_reservations[4]->getTitre());
+  }
+
+
+  /** @test */
+  public function sixthHoldGetEtatShouldReturnAffectee() {
+    $this->assertEquals('affectée', $this->_reservations[5]->getEtat());
   }
 
 
-- 
GitLab