Bug 11533: fix authority searching with no sorting when QueryParser is enabled
authorGalen Charlton <gmc@esilibrary.com>
Thu, 16 Jan 2014 20:36:02 +0000 (20:36 +0000)
committerGalen Charlton <gmc@esilibrary.com>
Fri, 24 Jan 2014 14:02:48 +0000 (14:02 +0000)
This patch fixes an issue where chosing 'None' as the sort order
for an authority search would result in zero hits if QueryParser is
eanbled.

This patch also adds some additional test cases.

To test:

[1] Enable QueryParser.
[2] Perform an authority search in the staff interface that
    uses 'Heading A-Z' as the sort order and returns hits.
[3] Run the same search, but with the sort order set to 'None'.
    No hits are returned.
[4] Apply the patch.
[5] Do step 3 again.  This time, hits should be returned.
[6] Verify that prove -v t/db_dependent/Search.t passes.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
C4/AuthoritiesMarc.pm
t/db_dependent/Search.t

index f7eb122..1c87285 100644 (file)
@@ -221,7 +221,7 @@ sub SearchAuthorities {
             $qpquery = $1;
         }
 
-        $qpquery .= " #$sortby";
+        $qpquery .= " #$sortby" unless $sortby eq '';
 
         $QParser->parse( $qpquery );
         $query = $QParser->target_syntax('authorityserver');
index d358e98..1233c97 100644 (file)
@@ -12,7 +12,7 @@ use YAML;
 use C4::Debug;
 require C4::Context;
 
-use Test::More tests => 216;
+use Test::More tests => 224;
 use Test::MockModule;
 use MARC::Record;
 use File::Spec;
@@ -736,6 +736,16 @@ sub run_marc21_search_tests {
         ['shakespeare'], 0, 10, '', '', 1
     );
     is($count, 1, 'MARC21 authorities: one hit on mainentry starts with "shakespeare"');
+    ($auths, $count) = SearchAuthorities(
+        ['mainentry'], ['and'], [''], ['starts'],
+        ['shakespeare'], 0, 10, '', 'HeadingAsc', 1
+    );
+    is($count, 1, 'MARC21 authorities: one hit on mainentry starts with "shakespeare" sorted by heading ascending');
+    ($auths, $count) = SearchAuthorities(
+        ['mainentry'], ['and'], [''], ['starts'],
+        ['shakespeare'], 0, 10, '', 'HeadingDsc', 1
+    );
+    is($count, 1, 'MARC21 authorities: one hit on mainentry starts with "shakespeare" sorted by heading descending');
     ($auths, $count) = SearchAuthorities(
         ['match'], ['and'], [''], ['contains'],
         ['沙士北亞威廉姆'], 0, 10, '', '', 1
@@ -749,6 +759,16 @@ sub run_marc21_search_tests {
         ['shakespeare'], 0, 10, '', '', 1
     );
     is($count, 1, 'MARC21 authorities: one hit on mainentry starts with "shakespeare" (QP)');
+    ($auths, $count) = SearchAuthorities(
+        ['mainentry'], ['and'], [''], ['starts'],
+        ['shakespeare'], 0, 10, '', 'HeadingAsc', 1
+    );
+    is($count, 1, 'MARC21 authorities: one hit on mainentry starts with "shakespeare" sorted by heading ascending (QP)');
+    ($auths, $count) = SearchAuthorities(
+        ['mainentry'], ['and'], [''], ['starts'],
+        ['shakespeare'], 0, 10, '', 'HeadingDsc', 1
+    );
+    is($count, 1, 'MARC21 authorities: one hit on mainentry starts with "shakespeare" sorted by heading descending (QP)');
     ($auths, $count) = SearchAuthorities(
         ['match'], ['and'], [''], ['contains'],
         ['沙士北亞威廉姆'], 0, 10, '', '', 1