4 use Test::More tests => 1;
7 use t::lib::TestBuilder;
9 use Koha::IssuingRules;
11 my $schema = Koha::Database->new->schema;
12 $schema->storage->txn_begin;
13 our $builder = t::lib::TestBuilder->new;
15 subtest 'guess_article_requestable_itemtypes' => sub {
18 t::lib::Mocks::mock_preference('ArticleRequests', 1);
19 Koha::IssuingRules->delete;
20 my $itype1 = $builder->build_object({ class => 'Koha::ItemTypes' });
21 my $itype2 = $builder->build_object({ class => 'Koha::ItemTypes' });
22 my $catg1 = $builder->build_object({ class => 'Koha::Patron::Categories' });
23 my $catg2 = $builder->build_object({ class => 'Koha::Patron::Categories' });
24 my $rule1 = $builder->build_object({
25 class => 'Koha::IssuingRules',
27 branchcode => 'MPL', # no worries: no FK
29 itemtype => $itype1->itemtype,
30 article_requests => 'bib_only',
33 my $rule2 = $builder->build_object({
34 class => 'Koha::IssuingRules',
37 categorycode => $catg1->categorycode,
38 itemtype => $itype2->itemtype,
39 article_requests => 'yes',
43 my $res = Koha::IssuingRules->guess_article_requestable_itemtypes;
44 is( $res->{'*'}, undef, 'Item type * seems not permitted' );
45 is( $res->{$itype1->itemtype}, 1, 'Item type 1 seems permitted' );
46 is( $res->{$itype2->itemtype}, 1, 'Item type 2 seems permitted' );
47 $res = Koha::IssuingRules->guess_article_requestable_itemtypes({ categorycode => $catg2->categorycode });
48 is( $res->{'*'}, undef, 'Item type * seems not permitted' );
49 is( $res->{$itype1->itemtype}, 1, 'Item type 1 seems permitted' );
50 is( $res->{$itype2->itemtype}, undef, 'Item type 2 seems not permitted' );
53 $rule2->itemtype('*')->store;
54 $Koha::IssuingRules::last_article_requestable_guesses = {};
55 $res = Koha::IssuingRules->guess_article_requestable_itemtypes;
56 is( $res->{'*'}, 1, 'Item type * seems permitted' );
57 is( $res->{$itype1->itemtype}, 1, 'Item type 1 seems permitted' );
58 is( $res->{$itype2->itemtype}, undef, 'Item type 2 seems not permitted' );
59 $res = Koha::IssuingRules->guess_article_requestable_itemtypes({ categorycode => $catg2->categorycode });
60 is( $res->{'*'}, undef, 'Item type * seems not permitted' );
61 is( $res->{$itype1->itemtype}, 1, 'Item type 1 seems permitted' );
62 is( $res->{$itype2->itemtype}, undef, 'Item type 2 seems not permitted' );
64 $Koha::IssuingRules::last_article_requestable_guesses = {};
67 $schema->storage->txn_rollback;