@@ -, +, @@ --- t/db_dependent/Utils/Datatables_Members.t | 22 ++++++++++++++++++++-- t/db_dependent/selenium/patrons_search.t | 22 +++++++++++++++++++++- 2 files changed, 41 insertions(+), 3 deletions(-) --- a/t/db_dependent/Utils/Datatables_Members.t +++ a/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; --- a/t/db_dependent/selenium/patrons_search.t +++ a/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 { --