From 15fff0df41a77d4108bffe0b0d0218c54de61dcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?ANDRE=20s=C3=A9bastien?= <sandre@afi-sa.fr> Date: Thu, 28 Sep 2023 13:16:12 +0000 Subject: [PATCH] hotline : #185534 : error on display serial records --- VERSIONS_HOTLINE/185534 | 1 + .../View/Wrapper/SerialArticleFromArray.php | 15 ++- .../scenarios/Serials/SerialsDetailsTest.php | 114 ++++++++++++++---- 3 files changed, 104 insertions(+), 26 deletions(-) create mode 100644 VERSIONS_HOTLINE/185534 diff --git a/VERSIONS_HOTLINE/185534 b/VERSIONS_HOTLINE/185534 new file mode 100644 index 00000000000..fbf5840254d --- /dev/null +++ b/VERSIONS_HOTLINE/185534 @@ -0,0 +1 @@ + - correctif #185534 : Articles de périodiques : Correction de l'affichage de la notice périodique \ No newline at end of file diff --git a/library/templates/Intonation/Library/View/Wrapper/SerialArticleFromArray.php b/library/templates/Intonation/Library/View/Wrapper/SerialArticleFromArray.php index 50f2e29fb81..785f12784e5 100644 --- a/library/templates/Intonation/Library/View/Wrapper/SerialArticleFromArray.php +++ b/library/templates/Intonation/Library/View/Wrapper/SerialArticleFromArray.php @@ -20,7 +20,8 @@ */ -class Intonation_Library_View_Wrapper_SerialArticleFromArray extends Intonation_Library_View_Wrapper_Abstract { +class Intonation_Library_View_Wrapper_SerialArticleFromArray + extends Intonation_Library_View_Wrapper_Abstract { public function getMainTitle() { return $this->_model['titre']; @@ -73,11 +74,15 @@ class Intonation_Library_View_Wrapper_SerialArticleFromArray extends Intonation_ public function getDescription() { - if ( ! $html = array_filter([$this->_model['note'], - $this->_model['resume']])) - return ''; + $html = ''; - return array_map(fn($line) => $this->_view->tag('p', $line)); + if ($note = $this->_model['note']) + $html .= $this->_view->tag('p', $note); + + if ($resume = $this->_model['resume']) + $html .= $this->_view->tag('p', $resume); + + return $html; } diff --git a/tests/scenarios/Serials/SerialsDetailsTest.php b/tests/scenarios/Serials/SerialsDetailsTest.php index 8508706101c..915b47a9277 100644 --- a/tests/scenarios/Serials/SerialsDetailsTest.php +++ b/tests/scenarios/Serials/SerialsDetailsTest.php @@ -21,8 +21,8 @@ abstract class SerialsDetailsTestCase extends AbstractControllerTestCase { + protected - $_storm_default_to_volatile = true, $_fakir_56, $_fakir_57, $_fakir_eco, @@ -31,34 +31,45 @@ abstract class SerialsDetailsTestCase extends AbstractControllerTestCase { public function setUp() { parent::setUp(); - Class_Notice::newInstanceWithId(234, - ['unimarc' => '00170nas0 2200085 450 0010008000001000018000082000030000262100009000564610019000653059603 a|||||||||2012 aFakirh58iDécembre 2012 d2012 032979322tFakir', - 'titre_principal' => 'Fakir 58', - 'clef_chapeau' => 'FAKIR', - 'tome_alpha' => '58', - 'issn' => '', - 'type_doc' => Class_TypeDoc::PERIODIQUE, - 'resume' => 'Fakir hebdo']); - - - $this->_fakir_57 = - Class_Notice::newInstanceWithId(2345, - ['titre_principal' => 'Fakir 57 septembre-novembre 2012', + $this->fixture(Class_Notice::class, + ['id' => 234, + 'unimarc' => '00170nas0 2200085 450 0010008000001000018000082000030000262100009000564610019000653059603 a|||||||||2012 aFakirh58iDécembre 2012 d2012 032979322tFakir', + 'titre_principal' => 'Fakir 58', + 'clef_chapeau' => 'FAKIR', + 'titres' => 'FAKIR', + 'clef_alpha' => 'FAKIRHEBDO---1523---2', + 'tome_alpha' => '58', + 'issn' => '', + 'type' => 1, + 'facettes' => 'T1', + 'type_doc' => Class_TypeDoc::PERIODIQUE, + 'resume' => 'Fakir hebdo']); + + $this->_fakir_57 = $this->fixture(Class_Notice::class, + ['id' => 2345, + 'titre_principal' => 'Fakir 57 septembre-novembre 2012', 'unimarc' => '00179nas0 2200085 450 0010008000001000018000082000039000262100009000654610019000743037025 a|||||||||2012 aFakirh57iSeptembre-Novembre 2012 d2012 032979322tFakir', 'clef_chapeau' => 'FAKIR', + 'titres' => 'FAKIR', 'type_doc' => Class_TypeDoc::PERIODIQUE, 'tome_alpha' => '57', 'url_vignette' => '', 'url_image' => '', + 'type' => 1, + 'facettes' => 'T1', 'resume' => 'Fakir hebdo']); - $this->_fakir_56 = - Class_Notice::newInstanceWithId(23456, - ['titre_principal' => 'juillet Fakir 56', + + $this->_fakir_56 = $this->fixture(Class_Notice::class, + ['id' => 23456, + 'titre_principal' => 'juillet Fakir 56', 'unimarc' => '00168nas0 2200085 450 0010008000001000018000082000028000262100009000544610019000633025081 a|||||||||2012 aFakirh56iJuillet 2012 d2012 032979322tFakir', 'clef_chapeau' => 'FAKIR', + 'titres' => 'FAKIR', 'tome_alpha' => '56', 'url_vignette' => '', 'url_image' => '', + 'type' => 1, + 'facettes' => 'T1', 'type_doc' => Class_TypeDoc::PERIODIQUE, 'resume' => 'Fakir hebdo']); @@ -84,6 +95,7 @@ abstract class SerialsDetailsTestCase extends AbstractControllerTestCase { class SerialsDetailsNoticeAjaxControllerPeriodiqueSerieTest extends SerialsDetailsTestCase { + public function setUp() { parent::setUp(); @@ -109,6 +121,7 @@ class SerialsDetailsNoticeAjaxControllerPeriodiqueSerieTest extends SerialsDetai abstract class SerialsDetailsWithXsltTestCase extends SerialsDetailsTestCase { + public function setUp() { parent::setUp(); @@ -163,9 +176,12 @@ abstract class SerialsDetailsWithXsltTestCase extends SerialsDetailsTestCase { -class SerialsDetailsNoticeAjaxControllerPeriodiqueSerieXsltTest extends SerialsDetailsWithXsltTestCase { +class SerialsDetailsNoticeAjaxControllerPeriodiqueSerieXsltTest + extends SerialsDetailsWithXsltTestCase { + public function setUp() { parent::setUp(); + $this->dispatch('/noticeajax/detail/id_notice/234'); } } @@ -178,6 +194,7 @@ class SerialsDetailsRecordDescriptionPeriodiqueSerieTest public function setUp() { parent::setUp(); + $this->_buildTemplateProfil(['id' => 78]); Storm_Cache::beVolatile(); @@ -259,9 +276,11 @@ class SerialsDetailsRecordDescriptionPeriodiqueSerieTest ['description', 'Un résumé succinct']]; } - /** @test - @dataProvider getElementsToTest - */ + + /** + * @test + * @dataProvider getElementsToTest + */ public function modelElementShouldCorrespondingExpectedString($element, $expected_result) { $this->assertXPathContentContains('//p[@class="model_'.$element.'_Class_Notice"]', $expected_result); @@ -279,9 +298,12 @@ class SerialsDetailsRecordDescriptionPeriodiqueSerieTest class SerialsDetailsInThemeTest extends SerialsDetailsTestCase { + public function setUp() { parent::setUp(); + $this->_buildTemplateProfil(['id' => 789]); + $this->dispatch('/record/description/id/234'); } @@ -297,3 +319,53 @@ class SerialsDetailsInThemeTest extends SerialsDetailsTestCase { $this->assertXPathContentContains('//div[@class="record_serials_articles container-fluid articles"]//div[@class="record_serials_articles_list col-12"]//div[@class="card-title card_title card_title_Intonation_Library_View_Wrapper_SerialArticleFromArray"]', 'Fakir ecologie'); } } + + + + +/* hotline : https://forge.afi-sa.net/issues/185534 */ +class SerialsDetailsWithNoteTest extends SerialsDetailsTestCase { + + public function setUp() { + parent::setUp(); + + $this->_buildTemplateProfil(['id' => 789]); + + Class_Notice_SerialArticles::find(19015) + ->setUnimarc('00196nas0 2200097 450 0010008000001000018000082000039000262100009000653000015000744610009000893037025 a|||||||||2012 aFakir ecologieh57iSeptembre-Novebr 2012 aFakir note d2012') + ->save(); + + $mock_sql = $this->mock(); + Zend_Registry::set('sql', $mock_sql); + + $mock_sql + + ->whenCalled('fetchOne') + ->with("select count(*) from stats_notices where annee=2023 and mois=09") + ->answers(1) + + ->whenCalled('execute') + ->with("update stats_notices set nb_visu = nb_visu + 1 where annee=2023 and mois=09") + ->answers(1) + + ->whenCalled('fetchAll') + ->with("select id_notice, facettes from notices Where (MATCH(titres, auteurs, editeur, collection, matieres, dewey, other_terms) AGAINST('+(FAKIR FAKIRS)' IN BOOLEAN MODE)) and type=1 order by MATCH(auteurs) AGAINST('P_FAKIR') desc, MATCH(titres) AGAINST('P_FAKIR') desc, MATCH(titres) AGAINST('FAKIR') desc, MATCH(auteurs) AGAINST('FAKIR') desc, date_creation desc", + true, + false) + ->answers([234, 'T1']) + + ->whenCalled('fetchAllByColumn') + ->with('select id_notice from notices where type_doc = "2" and clef_chapeau = "FAKIR"') + ->answers([234]) + + ->beStrict(); + + $this->dispatch('/recherche/viewnotice/clef/FAKIRHEBDO---1523---2/id/234/tri/*/expressionRecherche/fakir'); + } + + + /** @test */ + public function divRecordSerialsShouldContainsCardTitleFakirNote() { + $this->assertXPath('//div[@class="card-text card_description card_description_Intonation_Library_View_Wrapper_SerialArticleFromArray"]/p[text()="Fakir note"]'); + } +} -- GitLab