From 77bb555bbb964ad5a55adef37a3d50ea39534ed7 Mon Sep 17 00:00:00 2001 From: Andreas Jonsson Date: Thu, 8 Feb 2024 01:02:51 +0000 Subject: [PATCH] Bug 36025: Selenium test for the query parameters The test verifies that there is no clause for extended attributes in the patron search query when no patron attribute is searchable by default. NC amended patch - tidied Signed-off-by: Nick Clemens --- t/db_dependent/selenium/patrons_search.t | 47 +++++++++++++++++++++++- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/t/db_dependent/selenium/patrons_search.t b/t/db_dependent/selenium/patrons_search.t index b1a1bf7cf1f..af1c0b05de4 100755 --- a/t/db_dependent/selenium/patrons_search.t +++ b/t/db_dependent/selenium/patrons_search.t @@ -568,7 +568,7 @@ subtest 'Search patrons' => sub { }; subtest 'Search patrons in modal' => sub { - plan tests => 2; + plan tests => 3; setup(); @@ -835,8 +835,51 @@ subtest 'Search patrons in modal' => sub { ); }; - teardown(); + subtest 'no clause for extended_attributes when none are default searchable' => sub { + plan tests => 2; + + $attribute_type_searchable_1->update( { searched_by_default => 0 } ); + $attribute_type_searchable_2->update( { searched_by_default => 0 } ); + + $driver->get( $base_url . "/members/members-home.pl" ); + + $driver->execute_script( <<'EOF', 'capture_ajax_data' ); +jQuery( document ).on( "ajaxSend", function( event, request, settings ) { + jQuery('.patron_search_form').after('
'); + var url = new URL(window.location.origin + settings.url); + var parts = url.search.substring(1).split('&'); + var q; + for (var i = 0 ; i < parts.length ; i++) { + var p = parts[i].split('='); + if (p[0] === 'q') { + q = JSON.parse(decodeURIComponent(p[1])); + break; + } + } + + for (var i = 0; i < q.length; i++) { + var q0 = q[i]['-and']; + for (var j = 0; q0 && j < q0.length; j++) { + for (var k = 0; k < q0[j].length; k++) { + if (q0[j][k].hasOwnProperty('extended_attributes.code')) { + jQuery('.patron_search_form').after('
'); + } + } + } + } +} ); +EOF + $s->fill_form( { search_patron_filter => 'test_patron' } ); + $s->submit_form; + sleep $DT_delay && $s->wait_for_ajax; + my $e1 = $driver->find_elements( 'capture_ajax_data_was_executed', 'id' ); + is( scalar(@$e1), 1, 'the capture script was executed' ); + my $e2 = $driver->find_elements( 'had_extended_attributes_clause', 'id' ); + is( scalar(@$e2), 0, 'there were no extended attributes on the search clause' ); + }; + + teardown(); }; sub is_patron_shown { -- 2.39.5