From dea7caa09bfe067580e4ed5901e0bd827a7da3e0 Mon Sep 17 00:00:00 2001 From: Nick Date: Wed, 30 Oct 2019 14:07:02 +0000 Subject: [PATCH] Bug 17374: (follow-up) Unit tests and remove warns Signed-off-by: Maxime Dufresne --- C4/Utils/DataTables/Members.pm | 2 -- members/member.pl | 1 - t/db_dependent/Utils/Datatables_Members.t | 22 ++++++++++++++++++++-- t/db_dependent/selenium/patrons_search.t | 22 +++++++++++++++++++++- 4 files changed, 41 insertions(+), 6 deletions(-) diff --git a/C4/Utils/DataTables/Members.pm b/C4/Utils/DataTables/Members.pm index 5c54fe0c16..4488514b7c 100644 --- a/C4/Utils/DataTables/Members.pm +++ b/C4/Utils/DataTables/Members.pm @@ -14,7 +14,6 @@ sub search { my $branchcode = $params->{branchcode}; my $searchtype = $params->{searchtype} || 'contain'; my $searchfieldstype = $params->{searchfieldstype} || 'standard'; - warn $searchfieldstype; my $dt_params = $params->{dt_params}; unless ( $searchmember ) { @@ -146,7 +145,6 @@ sub search { my $where; $where = " WHERE " . join (" AND ", @where_strs) if @where_strs; - warn $where; my $orderby = dt_build_orderby($dt_params); my $limit; diff --git a/members/member.pl b/members/member.pl index a495b21256..2c136c3c9b 100755 --- a/members/member.pl +++ b/members/member.pl @@ -65,7 +65,6 @@ if ( $quicksearch and $searchmember ) { } my $searchfieldstype = $input->param('searchfieldstype') || 'standard'; -warn "script type $searchfieldstype"; $template->param( 'alphabet' => C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ); my $view = $input->request_method() eq "GET" ? "show_form" : "show_results"; diff --git a/t/db_dependent/Utils/Datatables_Members.t b/t/db_dependent/Utils/Datatables_Members.t index d378f8fe97..feca4f88fc 100644 --- a/t/db_dependent/Utils/Datatables_Members.t +++ b/t/db_dependent/Utils/Datatables_Members.t @@ -17,7 +17,7 @@ use Modern::Perl; -use Test::More tests => 50; +use Test::More tests => 51; use C4::Context; use C4::Members; @@ -57,7 +57,8 @@ my $john_doe = $builder->build({ surname => 'Doe', branchcode => $branchcode, dateofbirth => '1983-03-01', - userid => 'john.doe' + userid => 'john.doe', + initials => 'pacman' }, }); @@ -113,6 +114,8 @@ my %dt_params = ( iDisplayStart => 0 ); +t::lib::Mocks::mock_preference('DefaultPatronSearchFields', ''); + # Search "John Doe" my $search_results = C4::Utils::DataTables::Members::search({ searchmember => "John Doe", @@ -461,5 +464,20 @@ subtest 'ExtendedPatronAttributes' => sub { "'Dupont' is contained in 2 surnames and a patron attribute. Patron attribute one should not be displayed if searching in specific fields (Bug 18094)"); }; +subtest 'Search by any borrowers field (bug 17374)' => sub { + plan tests => 2; + + my $search_results = C4::Utils::DataTables::Members::search({ + searchmember => "pacman", + searchfieldstype => 'initials', + searchtype => 'contain', + branchcode => $branchcode, + dt_params => \%dt_params + }); + is( $search_results->{ iTotalDisplayRecords }, 1, "We find only 1 patron when searching for initials 'pacman'" ); + + is( $search_results->{ patrons }[0]->{ cardnumber }, $john_doe->{cardnumber}, "We find the correct patron when sesrching by initials" ) +}; + # End $schema->storage->txn_rollback; diff --git a/t/db_dependent/selenium/patrons_search.t b/t/db_dependent/selenium/patrons_search.t index 1d8cd98e48..c0ec35764b 100644 --- a/t/db_dependent/selenium/patrons_search.t +++ b/t/db_dependent/selenium/patrons_search.t @@ -40,7 +40,7 @@ my $builder = t::lib::TestBuilder->new; our @cleanup; subtest 'Search patrons' => sub { - plan tests => 6; + plan tests => 12; my @patrons; my $borrowernotes = q|just 'a" note \123 ❤|; @@ -58,6 +58,7 @@ subtest 'Search patrons' => sub { my $library = $builder->build_object( { class => 'Koha::Libraries', value => { branchname => $branchname } } ); + my $default_patron_search_fields = C4::Context->preference('DefaultPatronSearchFields'); for my $i ( 1 .. 25 ) { push @patrons, $builder->build_object( @@ -77,7 +78,25 @@ subtest 'Search patrons' => sub { } $s->auth; + C4::Context->set_preference('DefaultPatronSearchFields',""); $driver->get( $base_url . "/members/members-home.pl" ); + my @adv_options = $driver->find_elements('//select[@id="searchfieldstype"]/option'); + my @filter_options = $driver->find_elements('//select[@id="searchfieldstype_filter"]/option'); + is( scalar @adv_options, 11, 'All standard fields are searchable if DefaultPatronSearchFields not set'); + is( scalar @filter_options, 11, 'All standard fields are searchable by filter if DefaultPatronSearchFields not set'); + C4::Context->set_preference('DefaultPatronSearchFields',"initials"); + $driver->get( $base_url . "/members/members-home.pl" ); + @adv_options = $driver->find_elements('//select[@id="searchfieldstype"]/option'); + @filter_options = $driver->find_elements('//select[@id="searchfieldstype_filter"]/option'); + is( scalar @adv_options, 12, 'New option added when DefaultPatronSearchFields is populated with a field'); + is( scalar @filter_options, 12, 'New filter option added when DefaultPatronSearchFields is populated with a field'); + C4::Context->set_preference('DefaultPatronSearchFields',"initials,horses"); + $driver->get( $base_url . "/members/members-home.pl" ); + @adv_options = $driver->find_elements('//select[@id="searchfieldstype"]/option'); + @filter_options = $driver->find_elements('//select[@id="searchfieldstype_filter"]/option'); + is( scalar @adv_options, 12, 'Invalid option not added when DefaultPatronSearchFields is populated with an invalid field'); + is( scalar @filter_options, 12, 'Invalid filter option not added when DefaultPatronSearchFields is populated with an invalid field'); + C4::Context->set_preference('DefaultPatronSearchFields',""); $s->fill_form( { searchmember_filter => 'test_patron' } ); $s->submit_form; my $first_patron = $patrons[0]; @@ -114,6 +133,7 @@ subtest 'Search patrons' => sub { push @cleanup, $_ for @patrons; push @cleanup, $library; push @cleanup, $patron_category; + C4::Context->set_preference('DefaultPatronSearchFields',$default_patron_search_fields); }; END { -- 2.11.0