From a9440d9664f57c489217b0cb0471914417ceed7f Mon Sep 17 00:00:00 2001 From: llaffont <llaffont@afi-sa.fr> Date: Sat, 6 Feb 2016 14:01:10 +0100 Subject: [PATCH] dev #37100 performances: for fetch limit for record comments --- library/Class/AvisNotice.php | 6 ++++-- tests/library/Class/AvisNoticeTest.php | 27 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/library/Class/AvisNotice.php b/library/Class/AvisNotice.php index b4bb16054e3..159018a5df0 100644 --- a/library/Class/AvisNotice.php +++ b/library/Class/AvisNotice.php @@ -158,6 +158,7 @@ class AvisNoticeLoader extends Storm_Model_Loader { $preferences = array_merge(['id_panier' => 0, 'id_catalogue' => 0, 'abon_ou_bib' => 'all', + 'nb_aff_avis' => 10, ], $preferences); @@ -171,8 +172,9 @@ class AvisNoticeLoader extends Storm_Model_Loader { $this->_addStatutAbonBibWhereClause($abon_ou_bib, $params); - if ($limit_page) - $params['limitPage'] = $limit_page; + $params['limitPage'] = $limit_page + ? $limit_page + : [1, $preferences['nb_aff_avis'] * 3]; return Class_AvisNotice::findAllBy($params); } diff --git a/tests/library/Class/AvisNoticeTest.php b/tests/library/Class/AvisNoticeTest.php index 392e64d9036..cad8522695e 100644 --- a/tests/library/Class/AvisNoticeTest.php +++ b/tests/library/Class/AvisNoticeTest.php @@ -865,6 +865,7 @@ class AvisNoticeAvisFromPreferencesTest extends Storm_Test_ModelTestCase { ->with(['order' => 'DATE_AVIS DESC', 'clef_oeuvre' => ['POTTER'], 'flags' => '0', + 'limitPage' => [1, 30], 'where' => '(STATUT=1 OR ABON_OU_BIB=1) AND (STATUT=1 OR ABON_OU_BIB=0)']) ->answers([$this->_avis_bib_moderated, $this->_avis_abon_moderated]); @@ -882,6 +883,7 @@ class AvisNoticeAvisFromPreferencesTest extends Storm_Test_ModelTestCase { 'clef_oeuvre' => ['POTTER'], 'ABON_OU_BIB' => 0, 'flags' => 0, + 'limitPage' => [1, 30], 'where' => '(STATUT=1 OR ABON_OU_BIB=1) AND (STATUT=1 OR ABON_OU_BIB=0)']) ->answers([$this->_avis_abon_moderated]); @@ -898,6 +900,7 @@ class AvisNoticeAvisFromPreferencesTest extends Storm_Test_ModelTestCase { 'clef_oeuvre' => ['POTTER'], 'ABON_OU_BIB' => 1, 'flags' => 0, + 'limitPage' => [1, 30], 'where' => '(STATUT=1 OR ABON_OU_BIB=1) AND (STATUT=1 OR ABON_OU_BIB=0)']) ->answers([$this->_avis_bib_moderated]); @@ -916,6 +919,7 @@ class AvisNoticeAvisFromPreferencesTest extends Storm_Test_ModelTestCase { 'clef_oeuvre' => ['POTTER'], 'ABON_OU_BIB' => 0, 'flags' => 0, + 'limitPage' => [1, 30], 'where' => '(STATUT=1 OR ABON_OU_BIB=0)']) ->answers([$this->_avis_abon_moderated, $this->_avis_abon_not_moderated]); @@ -934,6 +938,7 @@ class AvisNoticeAvisFromPreferencesTest extends Storm_Test_ModelTestCase { ->with(['order' => 'DATE_AVIS DESC', 'clef_oeuvre' => ['POTTER'], 'flags' => 0, + 'limitPage' => [1, 30], 'where' => '(STATUT=1 OR ABON_OU_BIB=0)']) ->answers([$this->_avis_bib_moderated, $this->_avis_abon_moderated, $this->_avis_abon_not_moderated]); @@ -943,6 +948,26 @@ class AvisNoticeAvisFromPreferencesTest extends Storm_Test_ModelTestCase { } + /** @test */ + public function withNbAffTwoAvisShouldLimitPageToSix() { + Class_AdminVar::newInstanceWithId('MODO_AVIS', ['valeur' => 0]); + + Storm_Test_ObjectWrapper::onLoaderOfModel('Class_AvisNotice') + ->whenCalled('findAllBy') + ->with(['order' => 'DATE_AVIS DESC', + 'clef_oeuvre' => ['POTTER'], + 'flags' => 0, + 'limitPage' => [1, 6], + 'where' => '(STATUT=1 OR ABON_OU_BIB=0)']) + ->answers([$this->_avis_bib_moderated, $this->_avis_abon_moderated, $this->_avis_abon_not_moderated]); + + $this->assertEquals([$this->_avis_bib_moderated, $this->_avis_abon_moderated, $this->_avis_abon_not_moderated], + Class_AvisNotice::getAvisFromPreferences(['id_panier' => 1, + 'nb_aff_avis' => 2, + 'abon_ou_bib' => 'all'])); + } + + /** @test */ public function withAPosterioriBibModerationAllAvisShouldReturnModeratedRatingFromAbon() { @@ -954,6 +979,7 @@ class AvisNoticeAvisFromPreferencesTest extends Storm_Test_ModelTestCase { ->with(['order' => 'DATE_AVIS DESC', 'clef_oeuvre' => ['POTTER'], 'flags' => 0, + 'limitPage' => [1, 30], 'where' => '(STATUT=1 OR ABON_OU_BIB=1)']) ->answers([$this->_avis_bib_moderated, $this->_avis_bib_not_moderated, $this->_avis_abon_moderated]); @@ -978,6 +1004,7 @@ class AvisNoticeAvisFromPreferencesTest extends Storm_Test_ModelTestCase { ->whenCalled('findAllBy') ->with(['order' => 'DATE_AVIS DESC', 'flags' => 0, + 'limitPage' => [1, 30], 'id_notice' => -1]) ->answers([$this->_avis_bib_moderated, $this->_avis_bib_not_moderated, $this->_avis_abon_moderated]); -- GitLab