From c2061adc8be1a6843c0e082c18629f4a6b8fac78 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 Signed-off-by: Martin Renvoize Signed-off-by: Nick Clemens --- Koha/SearchEngine/Elasticsearch/QueryBuilder.pm | 8 +++++--- .../Koha/SearchEngine/Elasticsearch/QueryBuilder.t | 8 ++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm index e2e4beadeb..9ba77aad13 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 ) = @_; @@ -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 ); 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.39.5