From 9e90264bccc129fc9b84b40bbedd7f446ba997cf Mon Sep 17 00:00:00 2001 From: pbarroca <pbarroca@afi-sa.fr> Date: Fri, 5 Jun 2015 18:29:04 +0200 Subject: [PATCH] rel #25855 : domain results default sort by publication --- VERSIONS_HOTLINE/25855 | 1 + library/Class/CriteresRecherche.php | 27 +- tests/library/Class/CriteresRechercheTest.php | 341 ++++++++++-------- 3 files changed, 205 insertions(+), 164 deletions(-) create mode 100644 VERSIONS_HOTLINE/25855 diff --git a/VERSIONS_HOTLINE/25855 b/VERSIONS_HOTLINE/25855 new file mode 100644 index 00000000000..84119eb4801 --- /dev/null +++ b/VERSIONS_HOTLINE/25855 @@ -0,0 +1 @@ + - ticket #25855 : Les résultats issus d'une navigation dans les domaines sont triés par défaut par année de publication au lieu de pertinence \ No newline at end of file diff --git a/library/Class/CriteresRecherche.php b/library/Class/CriteresRecherche.php index ba6919e1e5a..77540faafd0 100644 --- a/library/Class/CriteresRecherche.php +++ b/library/Class/CriteresRecherche.php @@ -22,6 +22,14 @@ class Class_CriteresRecherche { use Trait_Translator; + const SORT_RELEVANCE = '*'; + const SORT_TITLE = 'alpha_titre'; + const SORT_AUTHOR = 'alpha_auteur'; + const SORT_PUBLICATION = 'annee desc'; + const SORT_DOCTYPE = 'type_doc,alpha_titre'; + const SORT_NOVELTY = 'date_creation desc'; + const SORT_VIEWS = 'nb_visu desc'; + protected $_params = [], $_validate_facette, @@ -104,13 +112,13 @@ class Class_CriteresRecherche { public function getListeTris() { if (!isset($this->_liste_tris)) - $this->_liste_tris = ['*' => $this->_('Pertinence'), - 'alpha_titre' => $this->_('Titre'), - 'alpha_auteur' => $this->_('Auteur'), - 'annee desc' => $this->_('Année de publication'), - 'type_doc,alpha_titre' => $this->_('Type de document'), - 'date_creation desc' => $this->_('Date de nouveauté'), - 'nb_visu desc' => $this->_('Consultation')]; + $this->_liste_tris = [self::SORT_RELEVANCE => $this->_('Pertinence'), + self::SORT_TITLE => $this->_('Titre'), + self::SORT_AUTHOR => $this->_('Auteur'), + self::SORT_PUBLICATION => $this->_('Année de publication'), + self::SORT_DOCTYPE => $this->_('Type de document'), + self::SORT_NOVELTY => $this->_('Date de nouveauté'), + self::SORT_VIEWS => $this->_('Consultation')]; return $this->_liste_tris; } @@ -259,6 +267,9 @@ class Class_CriteresRecherche { public function getTri() { $tri = $this->getParam('tri', 0); + if (0 == $tri && $this->isRechercheCatalogue()) + return self::SORT_PUBLICATION; + return isset($this->getListeTris()[$tri]) ? $tri : '*'; } @@ -581,7 +592,7 @@ class Class_CriteresRecherche { public function getNewUrlCriteresSerie($serie) { $url = $this->getUrlCriteresWithoutFacettes(); $url['serie'] = $serie; - $url['tri']='date_creation desc'; + $url['tri'] = self::SORT_NOVELTY; return $url; } diff --git a/tests/library/Class/CriteresRechercheTest.php b/tests/library/Class/CriteresRechercheTest.php index d539b1b8bc2..40470b80dd0 100644 --- a/tests/library/Class/CriteresRechercheTest.php +++ b/tests/library/Class/CriteresRechercheTest.php @@ -19,7 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -class CriteresRechercheRetourTest extends AbstractControllerTestCase { + +class CriteresRechercheRetourTest extends ModelTestCase { public function setUp() { parent::setUp(); $this->criteres_recherche= new Class_CriteresRecherche(); @@ -27,103 +28,129 @@ class CriteresRechercheRetourTest extends AbstractControllerTestCase { public function expectedUrls() { - return [ + return [ - [ ['clef' => 'POTTER'], ['controller' => 'recherche', - 'action' => 'simple'] ], + [['clef' => 'POTTER'], - [['expressionRecherche' => 'millenium'], ['controller' => 'recherche', - 'action' => 'simple', - 'expressionRecherche' => 'millenium']], + ['controller' => 'recherche', + 'action' => 'simple'] ], + + [['expressionRecherche' => 'millenium'], - [['facette' => 'A2'], ['controller' => 'recherche', - 'action' => 'simple', - 'facettes' => 'A2']], + ['controller' => 'recherche', + 'action' => 'simple', + 'expressionRecherche' => 'millenium']], + + [['facette' => 'A2'], + + ['controller' => 'recherche', + 'action' => 'simple', + 'facettes' => 'A2']], [['expressionRecherche' => 'millenium reine', - 'page' => 2], ['controller' => 'recherche', - 'action' => 'simple', - 'expressionRecherche' => 'millenium reine', - 'page' => 2]], + 'page' => 2], + + ['controller' => 'recherche', + 'action' => 'simple', + 'expressionRecherche' => 'millenium reine', + 'page' => 2]], [['expressionRecherche' => 'La nouvelle grille', 'facettes' => 'B1', - 'facette' => 'T1'], ['controller' => 'recherche', - 'action' => 'simple', - 'expressionRecherche' => 'La nouvelle grille', - 'facettes' => 'B1-T1' - ]], + 'facette' => 'T1'], + + ['controller' => 'recherche', + 'action' => 'simple', + 'expressionRecherche' => 'La nouvelle grille', + 'facettes' => 'B1-T1']], [['expressionRecherche' => 'La nouvelle grille', 'facettes' => 'B1-zork', - 'facette' => '1345'], ['controller' => 'recherche', - 'action' => 'simple', - 'expressionRecherche' => 'La nouvelle grille', - 'facettes' => 'B1' - ]], + 'facette' => '1345'], + ['controller' => 'recherche', + 'action' => 'simple', + 'expressionRecherche' => 'La nouvelle grille', + 'facettes' => 'B1']], [['expressionRecherche' => '', 'facettes' => 'V1', - 'facette' => 'U1'], ['controller' => 'recherche', - 'action' => 'simple', - 'expressionRecherche' => '*', - 'facettes' => 'V1-U1' - ]], + 'facette' => 'U1'], + + ['controller' => 'recherche', + 'action' => 'simple', + 'expressionRecherche' => '*', + 'facettes' => 'V1-U1']], [['rech_titres' => 'metropolitan', 'rech_auteurs' =>'', - 'facettes' => 'T1-YMET'], ['controller' => 'recherche', - 'action' => 'simple', - 'rech_titres' => 'metropolitan', - 'facettes' => 'T1-YMET']], + 'facettes' => 'T1-YMET'], - [['rech_titres' => 'bonheur', - 'rech_auteurs' =>'', - 'facettes' => 'T1-YMET', - 'liste_format' => 1], ['controller' => 'recherche', - 'action' => 'simple', - 'rech_titres' => 'bonheur', - 'facettes' => 'T1-YMET', - 'liste_format' => 1]], + ['controller' => 'recherche', + 'action' => 'simple', + 'rech_titres' => 'metropolitan', + 'facettes' => 'T1-YMET']], + + [['rech_titres' => 'bonheur', + 'rech_auteurs' =>'', + 'facettes' => 'T1-YMET', + 'liste_format' => 1], + ['controller' => 'recherche', + 'action' => 'simple', + 'rech_titres' => 'bonheur', + 'facettes' => 'T1-YMET', + 'liste_format' => 1]], - [['retour_panier' => '23'], ['controller' => 'panier', - 'action' => 'index', - 'id_panier' => '23']], + [['retour_panier' => '23'], + ['controller' => 'panier', + 'action' => 'index', + 'id_panier' => '23']], [['id_panier' => '23', - 'code_rebond' => 'G123'], ['controller' => 'recherche', - 'action' => 'simple', - 'code_rebond' => 'G123', - 'id_panier' => '23']], + 'code_rebond' => 'G123'], - [['retour_abonne' => 'prets'], ['controller' => 'abonne', - 'action' => 'prets']], + ['controller' => 'recherche', + 'action' => 'simple', + 'code_rebond' => 'G123', + 'id_panier' => '23']], + + [['retour_abonne' => 'prets'], + + ['controller' => 'abonne', + 'action' => 'prets']], [['id_panier' => '23', 'retour_abonne' => 'prets', 'retour_avis' => 5, - 'code_rebond' => 'G123'], ['controller' => 'recherche', - 'action' => 'simple', - 'code_rebond' => 'G123', - 'id_panier' => '23', - 'retour_abonne' => 'prets', - 'retour_avis' => 5]], - - [['retour_abonne' => 'reservations'], ['controller' => 'abonne', - 'action' => 'reservations']], - - [['retour_avis' => '4'], ['controller' => 'blog', - 'action' => 'viewcritiques', - 'id_module' => 4, - 'retour_avis' => 4]], - - [['genre' => '10;13' ], ['controller' => 'recherche', - 'action' => 'simple', - 'genre' => '10;13']] + 'code_rebond' => 'G123'], + + ['controller' => 'recherche', + 'action' => 'simple', + 'code_rebond' => 'G123', + 'id_panier' => '23', + 'retour_abonne' => 'prets', + 'retour_avis' => 5]], + + [['retour_abonne' => 'reservations'], + + ['controller' => 'abonne', + 'action' => 'reservations']], + + [['retour_avis' => '4'], + + ['controller' => 'blog', + 'action' => 'viewcritiques', + 'id_module' => 4, + 'retour_avis' => 4]], + + [['genre' => '10;13' ], + + ['controller' => 'recherche', + 'action' => 'simple', + 'genre' => '10;13']] ]; } @@ -141,10 +168,9 @@ class CriteresRechercheRetourTest extends AbstractControllerTestCase { -class CriteresRechercheRetourRechercheInitialeTest extends AbstractControllerTestCase { +class CriteresRechercheRetourRechercheInitialeTest extends ModelTestCase { public function expectedUrls() { return [ - [['expressionRecherche' => 'millenium', 'code_rebond' => 'A26'], ['controller' => 'recherche', 'action' => 'saisie', @@ -176,7 +202,7 @@ class CriteresRechercheRetourRechercheInitialeTest extends AbstractControllerTes -class CriteresRechercheNouvelleTest extends AbstractControllerTestCase { +class CriteresRechercheNouvelleTest extends ModelTestCase { public function setUp() { parent::setUp(); $this->criteres_recherche= new Class_CriteresRecherche(); @@ -184,21 +210,18 @@ class CriteresRechercheNouvelleTest extends AbstractControllerTestCase { public function expectedUrls() { - return [ - [[ 'expressionRecherche' => 'millenium', - 'code_rebond' => 'A26' - ], [ 'controller' => 'recherche', - 'action' => 'saisie' - ]], + return [[['expressionRecherche' => 'millenium', + 'code_rebond' => 'A26'], + ['controller' => 'recherche', + 'action' => 'saisie']], - [['rech_titres' => 'metropolitan', - 'rech_auteurs' =>'', - 'facettes' => 'T1-YMET'], ['controller' => 'recherche', - 'action' => 'avancee' - ]] + [['rech_titres' => 'metropolitan', + 'rech_auteurs' =>'', + 'facettes' => 'T1-YMET'], - ]; + ['controller' => 'recherche', + 'action' => 'avancee' ]]]; } @@ -215,7 +238,7 @@ class CriteresRechercheNouvelleTest extends AbstractControllerTestCase { -class CriteresRechercheUrlFacetteTest extends AbstractControllerTestCase { +class CriteresRechercheUrlFacetteTest extends ModelTestCase { public function setUp() { parent::setUp(); $this->criteres_recherche= new Class_CriteresRecherche(); @@ -223,48 +246,46 @@ class CriteresRechercheUrlFacetteTest extends AbstractControllerTestCase { public function expectedUrls() { - return [ - [[ 'expressionRecherche' => '1q84', - 'code_rebond' => 'A26', - 'facette' => 'T3' - ], [ 'controller' => 'recherche', + return [[['expressionRecherche' => '1q84', + 'code_rebond' => 'A26', + 'facette' => 'T3'], + + ['controller' => 'recherche', 'action' => 'simple', 'expressionRecherche' => '1q84', 'code_rebond' => 'A26', - 'facettes' => 'T3' - ]], + 'facettes' => 'T3']], - [['rech_titres' => 'metropolitan', - 'rech_auteurs' =>'', - 'facettes' => 'T1-YMET'], ['controller' => 'recherche', - 'action' => 'simple', - 'rech_titres' => 'metropolitan', - 'facettes' => 'T1-YMET' - ]], + [['rech_titres' => 'metropolitan', + 'rech_auteurs' =>'', + 'facettes' => 'T1-YMET'], - [['rech_titres' => 'metropolitan', - 'rech_auteurs' =>'', - 'operateur_editeur' => 'and', - 'operateur_titres' => 'and', + ['controller' => 'recherche', + 'action' => 'simple', + 'rech_titres' => 'metropolitan', + 'facettes' => 'T1-YMET']], - 'facettes' => 'T1-YMET'], ['controller' => 'recherche', - 'action' => 'simple', - 'operateur_titres' => 'and', - 'rech_titres' => 'metropolitan', - 'facettes' => 'T1-YMET' - ]], - [['id_catalogue' => '100', - 'filtres' => 'B1;B2'], [ - 'controller' => 'recherche', - 'action' => 'simple', - 'id_catalogue' =>'100', - ]], + [['rech_titres' => 'metropolitan', + 'rech_auteurs' =>'', + 'operateur_editeur' => 'and', + 'operateur_titres' => 'and', + 'facettes' => 'T1-YMET'], + ['controller' => 'recherche', + 'action' => 'simple', + 'operateur_titres' => 'and', + 'rech_titres' => 'metropolitan', + 'facettes' => 'T1-YMET']], - ]; + [['id_catalogue' => '100', + 'filtres' => 'B1;B2'], + + ['controller' => 'recherche', + 'action' => 'simple', + 'id_catalogue' =>'100']]]; } @@ -275,15 +296,13 @@ class CriteresRechercheUrlFacetteTest extends AbstractControllerTestCase { public function urlRetourShouldBe($params, $url) { $this->criteres_recherche->setParams($params); $this->assertEquals($url,$this->criteres_recherche->getUrlCriteresWithFacettes()); - } - } -class CriteresRechercheFilterParamsTest extends AbstractControllerTestCase { +class CriteresRechercheFilterParamsTest extends ModelTestCase { public function setUp() { parent::setUp(); $this->criteres_recherche= new Class_CriteresRecherche(); @@ -291,50 +310,47 @@ class CriteresRechercheFilterParamsTest extends AbstractControllerTestCase { public function expectedUrls() { - return [ - [ - [ 'expressionRecherche' => '1q84', - 'code_rebond' => 'A26', - 'facette' => 'T3' - ], [ 'expressionRecherche' => '1q84', - 'code_rebond' => 'A26', - 'facette' => 'T3' - ]], + return [[['expressionRecherche' => '1q84', + 'code_rebond' => 'A26', + 'facette' => 'T3'], + ['expressionRecherche' => '1q84', + 'code_rebond' => 'A26', + 'facette' => 'T3']], - [['rech_titres' => 'Tribulations d\'un précaire', - 'rech_auteurs' =>'', - 'facettes' => 'T1-YMET'], ['rech_titres' => 'Tribulations d\'un précaire', - 'facettes' => 'T1-YMET' - ]], - - [['rech_titres' => 'le quai de ouistreham', - 'rech_auteurs' =>'Aubenas', - 'filtres' => 'B1;B2'], ['rech_titres' => 'le quai de ouistreham', - 'rech_auteurs' =>'Aubenas', - 'filtres' => 'B1;B2' - ]], - - [['rech_titres' => 'No-logo', - 'rech_auteurs' =>'', - 'code_rebond' =>'', - 'operateur_editeur' => 'and', - 'operateur_titres' => 'or', - ], ['rech_titres' => 'No-logo', - 'operateur_titres' => 'or' + [['rech_titres' => 'Tribulations d\'un précaire', + 'rech_auteurs' =>'', + 'facettes' => 'T1-YMET'], - ]], + ['rech_titres' => 'Tribulations d\'un précaire', + 'facettes' => 'T1-YMET']], - [['expressionRecherche' => 'Oz', - 'serie' =>'OZ', - ], ['expressionRecherche' => 'Oz', - 'serie' => 'OZ' - ]] + [['rech_titres' => 'le quai de ouistreham', + 'rech_auteurs' =>'Aubenas', + 'filtres' => 'B1;B2'], + ['rech_titres' => 'le quai de ouistreham', + 'rech_auteurs' =>'Aubenas', + 'filtres' => 'B1;B2']], - ]; + + [['rech_titres' => 'No-logo', + 'rech_auteurs' =>'', + 'code_rebond' =>'', + 'operateur_editeur' => 'and', + 'operateur_titres' => 'or'], + + ['rech_titres' => 'No-logo', + 'operateur_titres' => 'or']], + + + [['expressionRecherche' => 'Oz', + 'serie' =>'OZ'], + + ['expressionRecherche' => 'Oz', + 'serie' => 'OZ']]]; } @@ -350,7 +366,7 @@ class CriteresRechercheFilterParamsTest extends AbstractControllerTestCase { -class CriteresRechercheSerieTest extends AbstractControllerTestCase { +class CriteresRechercheSerieTest extends ModelTestCase { public function setUp() { parent::setUp(); $this->criteres_recherche= new Class_CriteresRecherche(); @@ -382,10 +398,23 @@ class CriteresRechercheSerieTest extends AbstractControllerTestCase { +class CriteresRechercheCatalogueSortTest extends ModelTestCase { + /** @test */ + public function shouldBeSortedByPublication() { + $criteres = new Class_CriteresRecherche(); + $criteres->setParams(['id_catalogue' => 2]); + + $this->assertEquals(Class_CriteresRecherche::SORT_PUBLICATION, + $criteres->getTri()); + } +} + + + class CriteresRechercheWithGenreTest extends AbstractControllerTestCase { public function setUp() { parent::setUp(); - $this->criteres_recherche= new Class_CriteresRecherche(); + $this->criteres_recherche = new Class_CriteresRecherche(); $this->criteres_recherche->setParams(['genre' => '10;56']); } -- GitLab