Bug 19575: Rebase and fix tests
authorroot <root@f1ebe1bec408>
Tue, 12 Feb 2019 21:52:39 +0000 (21:52 +0000)
committerroot <root@f1ebe1bec408>
Mon, 4 Mar 2019 18:25:49 +0000 (18:25 +0000)
This patch lower cases the sort by fields to normalize checking them and adjusts
some existing tests to meet the new expectations.

The regex for splitting terms has been moved into a subroutine so that adjustment was made

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

Koha/SearchEngine/Elasticsearch/QueryBuilder.pm
t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t

index e2e4bea..9ba77aa 100644 (file)
@@ -432,6 +432,7 @@ sub build_authorities_query_compat {
 
     # Convert to lower case
     $marclist = [map(lc, @{$marclist})];
+    $orderby  = lc $orderby;
 
     # Make sure everything exists
     foreach my $m (@$marclist) {
@@ -454,7 +455,7 @@ sub build_authorities_query_compat {
       : ( $orderby =~ /^auth/ )    ? 'local-number'
       :                              undef;
     if ($sort_field) {
-        my $sort_order = ( $orderby =~ /Asc$/ ) ? 'asc' : 'desc';
+        my $sort_order = ( $orderby =~ /asc$/ ) ? 'asc' : 'desc';
         %sort = ( $sort_field => $sort_order, );
     }
     my %search = (
@@ -887,7 +888,6 @@ operands and double quoted strings.
 
 =cut
 
-my $tokenize_split_re = qr/((?:${field_name_pattern}${multi_field_pattern}:)?"[^"]+"|\s+)/;
 sub _truncate_terms {
     my ( $self, $query ) = @_;
 
@@ -914,12 +914,14 @@ any field prefixes and quoted strings.
 
 =cut
 
+my $tokenize_split_re = qr/((?:${field_name_pattern}${multi_field_pattern}:)?"[^"]+"|\s+)/;
+
 sub _split_query {
     my ( $self, $query ) = @_;
 
     # '"donald duck" title:"the mouse" and peter" get split into
     # ['', '"donald duck"', '', ' ', '', 'title:"the mouse"', '', ' ', 'and', ' ', 'pete']
-    my @tokens = split /((?:[\w\-.]+:)?"[^"]+"|\s+)/, $query;
+    my @tokens = split $tokenize_split_re, $query;
 
     # Filter out empty values
     @tokens = grep( /\S/, @tokens );
index eaaebf2..f3e7117 100644 (file)
@@ -144,7 +144,7 @@ subtest 'build_authorities_query_compat() tests' => sub {
         $query->{sort},
         [
             {
-                'Heading__sort.phrase' => 'asc'
+                'heading__sort' => 'asc'
             }
         ],
         "ascending sort parameter properly formed"
@@ -154,7 +154,7 @@ subtest 'build_authorities_query_compat() tests' => sub {
         $query->{sort},
         [
             {
-                'Heading__sort.phrase' => 'desc'
+                'heading__sort' => 'desc'
             }
         ],
         "descending sort parameter properly formed"
@@ -428,7 +428,7 @@ subtest "_convert_sort_fields() tests" => sub {
     is_deeply(
         \@sort_by,
         [
-            { field => 'callnum', direction => 'asc' },
+            { field => 'local-classification', direction => 'asc' },
             { field => 'author',  direction => 'desc' }
         ],
         'sort fields should have been split correctly'
@@ -439,7 +439,7 @@ subtest "_convert_sort_fields() tests" => sub {
     is_deeply(
         \@sort_by,
         [
-            { field => 'callnum', direction => 'asc' },
+            { field => 'local-classification', direction => 'asc' },
             { field => 'author',  direction => 'desc' }
         ],
         'sort fields should have been split correctly'