|
Lines 1998-2013
subtest 'search_ordered' => sub {
Link Here
|
| 1998 |
|
1998 |
|
| 1999 |
subtest 'filter_by_for_hold' => sub { |
1999 |
subtest 'filter_by_for_hold' => sub { |
| 2000 |
|
2000 |
|
| 2001 |
plan tests => 13; |
2001 |
plan tests => 15; |
| 2002 |
|
2002 |
|
| 2003 |
$schema->storage->txn_begin; |
2003 |
$schema->storage->txn_begin; |
| 2004 |
|
2004 |
|
|
|
2005 |
# Set default rule |
| 2006 |
Koha::CirculationRules->set_rule( |
| 2007 |
{ |
| 2008 |
branchcode => undef, |
| 2009 |
itemtype => undef, |
| 2010 |
rule_name => 'holdallowed', |
| 2011 |
rule_value => 'not_allowed', |
| 2012 |
} |
| 2013 |
); |
| 2014 |
my $itemtype = $builder->build_object({ class => 'Koha::ItemTypes' }); |
| 2015 |
my $not_holdable_itemtype = $itemtype->itemtype; |
| 2016 |
my $itemtype2 = $builder->build_object({ class => 'Koha::ItemTypes' }); |
| 2017 |
my $holdable_itemtype = $itemtype2->itemtype; |
| 2018 |
Koha::CirculationRules->set_rule( |
| 2019 |
{ |
| 2020 |
branchcode => undef, |
| 2021 |
itemtype => $holdable_itemtype, |
| 2022 |
rule_name => 'holdallowed', |
| 2023 |
rule_value => 'from_any_library', |
| 2024 |
} |
| 2025 |
); |
| 2026 |
|
| 2005 |
my $biblio = $builder->build_sample_biblio; |
2027 |
my $biblio = $builder->build_sample_biblio; |
| 2006 |
my $library = $builder->build_object({ class => 'Koha::Libraries' }); |
2028 |
my $library = $builder->build_object({ class => 'Koha::Libraries' }); |
| 2007 |
|
|
|
| 2008 |
t::lib::Mocks::mock_preference('IndependentBranches', 0); # more robust tests |
2029 |
t::lib::Mocks::mock_preference('IndependentBranches', 0); # more robust tests |
| 2009 |
|
|
|
| 2010 |
is( $biblio->items->filter_by_for_hold->count, 0, 'no item yet' ); |
2030 |
is( $biblio->items->filter_by_for_hold->count, 0, 'no item yet' ); |
|
|
2031 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 0, itype => $not_holdable_itemtype } ); |
| 2032 |
is( $biblio->items->filter_by_for_hold->count, 0, 'default rule prevents hold' ); |
| 2033 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 0, itype => $holdable_itemtype } ); |
| 2034 |
is( $biblio->items->filter_by_for_hold->count, 1, 'hold allowed despite default rule' ); |
| 2035 |
|
| 2036 |
# Reset items and circ rules to remove default rule |
| 2037 |
$biblio->items->delete; |
| 2038 |
Koha::CirculationRules->search( |
| 2039 |
{ |
| 2040 |
rule_name => 'holdallowed', |
| 2041 |
rule_value => 'not_allowed', |
| 2042 |
} |
| 2043 |
)->delete; |
| 2044 |
|
| 2011 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 1 } ); |
2045 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 1 } ); |
| 2012 |
is( $biblio->items->filter_by_for_hold->count, 0, 'no item for hold' ); |
2046 |
is( $biblio->items->filter_by_for_hold->count, 0, 'no item for hold' ); |
| 2013 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 0 } ); |
2047 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 0 } ); |
|
Lines 2030-2037
subtest 'filter_by_for_hold' => sub {
Link Here
|
| 2030 |
t::lib::Mocks::mock_preference('AllowHoldsOnDamagedItems', 1); |
2064 |
t::lib::Mocks::mock_preference('AllowHoldsOnDamagedItems', 1); |
| 2031 |
is( $biblio->items->filter_by_for_hold->count, 6, '6 items for hold - damaged if AllowHoldsOnDamagedItems' ); |
2065 |
is( $biblio->items->filter_by_for_hold->count, 6, '6 items for hold - damaged if AllowHoldsOnDamagedItems' ); |
| 2032 |
|
2066 |
|
| 2033 |
my $itemtype = $builder->build_object({ class => 'Koha::ItemTypes' }); |
|
|
| 2034 |
my $not_holdable_itemtype = $itemtype->itemtype; |
| 2035 |
$builder->build_sample_item( |
2067 |
$builder->build_sample_item( |
| 2036 |
{ |
2068 |
{ |
| 2037 |
biblionumber => $biblio->biblionumber, |
2069 |
biblionumber => $biblio->biblionumber, |
| 2038 |
- |
|
|