When using ShowComponentRecords feature warnings like: [WARN] Use of uninitialized value in concatenation (.) or string at /kohadevbox/koha/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm line 352. [WARN] Use of uninitialized value $comp_query_str in concatenation (.) or string at /kohadevbox/koha/catalogue/detail.pl line 273. are generated from staff interface detail view when: 1. ShowComponentRecords = 'both' or 'staff' AND 2. UseControlNumber is on AND 3. record lacks 001 field Similarly, from OPAC interface: [WARN] Use of uninitialized value in concatenation (.) or string at /kohadevbox/koha/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm line 352. [WARN] Use of uninitialized value $comp_query_str in concatenation (.) or string at /kohadevbox/koha/opac/opac-detail.pl line 640.
Created attachment 192054 [details] [review] Bug 41713: warnings sometimes generated when using ShowComponentRecords feature When using ShowComponentRecords feature warnings are generated from staff interface detail view when: 1. ShowComponentRecords = 'both' or 'staff' AND 2. UseControlNumber is on AND 3. record lacks 001 field Test plan ========= 1. Have a standard ktd instance with Elasticsearch. 2. Set UseControlNumber systempreference to Use. 3. In OPAC and in staff interface, open in Normal view a record without field 001, e.g. # 399 ("Art Since 1980"). 4. Check plack-opac-error.log and plack-intranet-error.log. You should see fresh warnings like: [WARN] Use of uninitialized value in concatenation (.) or string at /kohadevbox/koha/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm line 352. [WARN] Use of uninitialized value $comp_query_str in concatenation (.) or string at /kohadevbox/koha/opac/opac-detail.pl line 640 [WARN] Use of uninitialized value in concatenation (.) or string at /kohadevbox/koha/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm line 352. [WARN] Use of uninitialized value $comp_query_str in concatenation (.) or string at /kohadevbox/koha/catalogue/detail.pl line 273. 5. Apply the patch; restart_all. 6. Repeat p. 4. There should be no new warnings. Sponsored-by: Ignatianum University in Cracow
Created attachment 192055 [details] [review] Bug 41713: Unit tests
Created attachment 192056 [details] [review] Bug 41713: warnings sometimes generated when using ShowComponentRecords feature When using ShowComponentRecords feature warnings are generated from staff interface detail view when: 1. ShowComponentRecords = 'both' or 'staff' AND 2. UseControlNumber is on AND 3. record lacks 001 field Test plan ========= 1. Have a standard ktd instance with Elasticsearch. 2. Set UseControlNumber systempreference to Use. Set ShowComponentRecords systempreference to both staff and OPAC. 3. In OPAC and in staff interface, open in Normal view a record without field 001, e.g. # 399 ("Art Since 1980"). 4. Check plack-opac-error.log and plack-intranet-error.log. You should see fresh warnings like: [WARN] Use of uninitialized value in concatenation (.) or string at /kohadevbox/koha/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm line 352. [WARN] Use of uninitialized value $comp_query_str in concatenation (.) or string at /kohadevbox/koha/opac/opac-detail.pl line 640 [WARN] Use of uninitialized value in concatenation (.) or string at /kohadevbox/koha/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm line 352. [WARN] Use of uninitialized value $comp_query_str in concatenation (.) or string at /kohadevbox/koha/catalogue/detail.pl line 273. 5. Apply the patch; restart_all. 6. Repeat p. 4. There should be no new warnings. Sponsored-by: Ignatianum University in Cracow
Created attachment 192057 [details] [review] Bug 41713: Unit tests
Nota bene: the key change is to examine the @{$components} array, not the reference to the array ($components) in 'if' statement. In the old version: if ( my $components = $biblio->get_marc_components(... the condition is always true since get_marc_components always returns an array reference, even if if is an empty array.
Created attachment 192106 [details] [review] Bug 41713: warnings sometimes generated when using ShowComponentRecords feature When using ShowComponentRecords feature warnings are generated from staff interface detail view when: 1. ShowComponentRecords = 'both' or 'staff' AND 2. UseControlNumber is on AND 3. record lacks 001 field Test plan ========= 1. Have a standard ktd instance with Elasticsearch. 2. Set UseControlNumber systempreference to Use. Set ShowComponentRecords systempreference to both staff and OPAC. 3. In OPAC and in staff interface, open in Normal view a record without field 001, e.g. # 399 ("Art Since 1980"). 4. Check plack-opac-error.log and plack-intranet-error.log. You should see fresh warnings like: [WARN] Use of uninitialized value in concatenation (.) or string at /kohadevbox/koha/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm line 352. [WARN] Use of uninitialized value $comp_query_str in concatenation (.) or string at /kohadevbox/koha/opac/opac-detail.pl line 640 [WARN] Use of uninitialized value in concatenation (.) or string at /kohadevbox/koha/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm line 352. [WARN] Use of uninitialized value $comp_query_str in concatenation (.) or string at /kohadevbox/koha/catalogue/detail.pl line 273. 5. Apply the patch; restart_all. 6. Repeat p. 4. There should be no new warnings. Sponsored-by: Ignatianum University in Cracow Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Created attachment 192107 [details] [review] Bug 41713: Unit tests Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Changes in the first patch look good to me. Have my doubts on the second patch. + t::lib::Mocks::mock_preference( 'SearchEngine', 'Elasticsearch' ); During this subtest, this pref was mocked to Zebra before. Should it be set back? Not sure.. What about the mocks for doing a search on Elastic? You cant really query a search engine here. (You are calling search_compat. See the mocks for Zebra.) And if we are mocking those routines, what is still the use of this test? Can we do without the second patch?
Another observation (out of scope) shift @$operators; # Shift out the one we unshifted before => But this is only done when the $scan is false !