From f2662499709c8edb2b5af091d3acaa15bd509ac3 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 12 Feb 2019 21:52:39 +0000 Subject: [PATCH] Bug 19575: Rebase and fix tests 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 --- Koha/SearchEngine/Elasticsearch/QueryBuilder.pm | 7 ++++--- t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t | 8 ++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm index e2e4beadeb..11ad3807a8 100644 --- a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm +++ b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm @@ -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 ) = @_; @@ -919,7 +919,8 @@ sub _split_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 $tokenize_split_re = qr/((?:${field_name_pattern}${multi_field_pattern}:)?"[^"]+"|\s+)/; + my @tokens = split $tokenize_split_re, $query; # Filter out empty values @tokens = grep( /\S/, @tokens ); diff --git a/t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t b/t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t index eaaebf25c2..f3e7117a80 100644 --- a/t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t +++ b/t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t @@ -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' -- 2.11.0