Bug 19582: Unit tests
authorNick Clemens <nick@bywatersolutions.com>
Tue, 7 Nov 2017 01:24:56 +0000 (01:24 +0000)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 27 Mar 2018 20:50:38 +0000 (17:50 -0300)
Signed-off-by: David Bourgault <david.bourgault@inlibro.com>
Signed-off-by: Nicolas Legrand <nicolas.legrand@bulac.fr>
Signed-off-by: Alex Arnaud <alex.arnaud@biblibre.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t

index 50dd212..025c788 100644 (file)
 
 use Modern::Perl;
 
-use Test::More tests => 1;
+use Test::More tests => 2;
 use Test::Exception;
 
 use Koha::Database;
-use Koha::SearchEngine::Elasticsearch::QueryBuilder;
+use Koha::SearchEngine::Elasticsearch::QueryBuilder
 
 subtest 'build_authorities_query_compat() tests' => sub {
 
@@ -53,3 +53,27 @@ subtest 'build_authorities_query_compat() tests' => sub {
     'Koha::Exceptions::WrongParameter',
         'Exception thrown on invalid value in the marclist param';
 };
+
+subtest 'build query from form subtests' => sub {
+    plan tests => 5;
+
+    my $builder = Koha::SearchEngine::Elasticsearch::QueryBuilder->new({ 'index' => 'authorities' }),
+    #when searching for authorities from a record the form returns marclist with blanks for unentered terms
+    my @marclist = ('mainmainentry','mainentry','match', 'all');
+    my @values   = ( undef,         'Hamilton',  undef,   undef);
+    my @operator = ( 'contains', 'contains', 'contains', 'contains');
+
+    my $query = $builder->build_authorities_query_compat( \@marclist, undef,
+                    undef, \@operator , \@values, 'AUTH_TYPE', 'asc' );
+    is($query->{query}->{bool}->{should}[0]->{match}->{'Heading'}, "Hamilton","Expected search is populated");
+    is( scalar @{ $query->{query}->{bool}->{should} }, 1,"Only defined search is populated");
+
+    @values[2] = 'Jefferson';
+    $query = $builder->build_authorities_query_compat( \@marclist, undef,
+                    undef, \@operator , \@values, 'AUTH_TYPE', 'asc' );
+    is($query->{query}->{bool}->{should}[0]->{match}->{'Heading'}, "Hamilton","First index searched as expected");
+    is($query->{query}->{bool}->{should}[1]->{match}->{'Match'}, "Jefferson","Second index searched when populated");
+    is( scalar @{ $query->{query}->{bool}->{should} }, 2,"Only defined searches are populated");
+
+
+};