@@ -, +, @@ biblionumber: [1] --- Koha/Items.pm | 2 +- t/db_dependent/Koha/Items.t | 9 ++++++++- t/db_dependent/XSLT.t | 14 +++++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) --- a/Koha/Items.pm +++ a/Koha/Items.pm @@ -127,7 +127,7 @@ sub filter_by_visible_in_opac { my $rules_params; foreach my $field ( keys %$rules ) { - $rules_params->{$field} = + $rules_params->{'me.'.$field} = [ { '-not_in' => $rules->{$field} }, undef ]; } --- a/t/db_dependent/Koha/Items.t +++ a/t/db_dependent/Koha/Items.t @@ -1587,7 +1587,7 @@ $schema->storage->txn_rollback; subtest 'filter_by_visible_in_opac() tests' => sub { - plan tests => 12; + plan tests => 13; $schema->storage->txn_begin; @@ -1688,6 +1688,13 @@ subtest 'filter_by_visible_in_opac() tests' => sub { 'No rules passed, hidelostitems set, patron exception changes nothing' ); + $rules = { biblionumber => [ $biblio->biblionumber ] }; + is( + $biblio->items->filter_by_visible_in_opac->count, + 0, + 'Biblionumber rule successfully hides all items' + ); + $rules = { withdrawn => [ 1, 2 ], copynumber => [ 2 ] }; is( $biblio->items->filter_by_visible_in_opac->count, --- a/t/db_dependent/XSLT.t +++ a/t/db_dependent/XSLT.t @@ -147,11 +147,12 @@ $schema->storage->txn_rollback; subtest 'buildKohaItemsNamespace() including/omitting items tests' => sub { - plan tests => 20; + plan tests => 23; $schema->storage->txn_begin; my $biblio = $builder->build_sample_biblio; + my $biblio2 = $builder->build_sample_biblio; # Have two known libraries for testing purposes my $library_1 = $builder->build_object({ class => 'Koha::Libraries' }); @@ -174,6 +175,17 @@ subtest 'buildKohaItemsNamespace() including/omitting items tests' => sub { like( $xml, qr{$library_1_name}, '$item_1 present in the XML' ); like( $xml, qr{$library_2_name}, '$item_2 present in the XML' ); unlike( $xml, qr{$library_3_name}, '$item_3 not present in the XML' ); + + my $mocked_context = Test::MockModule->new('C4::Context'); + $mocked_context->mock( 'yaml_preference', sub { + return { biblionumber => [ $biblio2->biblionumber ] }; + }); + my $hid_rs = $biblio->items->search({ "me.itemnumber" => { '!=' => $item_3->itemnumber } })->filter_by_visible_in_opac(); + $xml = C4::XSLT::buildKohaItemsNamespace( $biblio->biblionumber, undef, $hid_rs ); + like( $xml, qr{$library_1_name}, '$item_1 present in the XML' ); + like( $xml, qr{$library_2_name}, '$item_2 present in the XML' ); + unlike( $xml, qr{$library_3_name}, '$item_3 not present in the XML' ); + ## Test passing one item in hidden_items and items_rs $xml = C4::XSLT::buildKohaItemsNamespace( $biblio->biblionumber, [ $item_1->itemnumber ], $items_rs->reset ); --