From 49eca97f3e5062b00fffac1142919655068e746f Mon Sep 17 00:00:00 2001 From: Alex Arnaud Date: Thu, 19 May 2022 15:09:58 +0000 Subject: [PATCH] Bug 30817: make build_authorities_query takes QueryAutoTruncate system preference into account --- .../Elasticsearch/QueryBuilder.pm | 6 ++--- .../SearchEngine/Elasticsearch/QueryBuilder.t | 25 ++++++++++++++++++- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm index dba475eb3c..e1933a5749 100644 --- a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm +++ b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm @@ -441,12 +441,12 @@ sub build_authorities_query { # Given that field data is "The quick brown fox" # a search containing any of the words will match, regardless # of order. + my $truncate = C4::Context->preference("QueryAutoTruncate") || 0; my @tokens = $self->_split_query( $val ); foreach my $token ( @tokens ) { - $token = $self->_truncate_terms( - $self->clean_search_term( $token ) - ); + $token = $self->clean_search_term( $token ); + $token = $self->_truncate_terms( $token ) if $truncate; } my $query = $self->_join_queries( @tokens ); my $query_string = { diff --git a/t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t b/t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t index b4e2de938c..e99900dc59 100755 --- a/t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t +++ b/t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t @@ -22,7 +22,7 @@ use Test::Exception; use Test::Warn; use t::lib::Mocks; use t::lib::TestBuilder; -use Test::More tests => 7; +use Test::More tests => 8; use List::Util qw( all ); @@ -101,10 +101,33 @@ $se->mock( 'get_elasticsearch_mappings', sub { return $all_mappings{$self->index}; }); +subtest 'build_authorities_query_compat() no query truncate tests' => sub { + + plan tests => 9; + + t::lib::Mocks::mock_preference( 'QueryAutoTruncate', '' ); + + my $qb; + + ok( + $qb = Koha::SearchEngine::Elasticsearch::QueryBuilder->new({ 'index' => 'authorities' }), + 'Creating new query builder object for authorities' + ); + + my $koha_to_index_name = $Koha::SearchEngine::Elasticsearch::QueryBuilder::koha_to_index_name; + my $search_term = 'a'; + foreach my $koha_name ( keys %{ $koha_to_index_name } ) { + my $query = $qb->build_authorities_query_compat( [ $koha_name ], undef, undef, ['contains'], [$search_term], 'AUTH_TYPE', 'asc' ); + is( $query->{query}->{bool}->{must}[0]->{query_string}->{query}, 'a'); + } +}; + subtest 'build_authorities_query_compat() tests' => sub { plan tests => 65; + t::lib::Mocks::mock_preference( 'QueryAutoTruncate', 1 ); + my $qb; ok( -- 2.30.2