@@ -, +, @@
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 );
--