Lines 1554-1633
subtest 'can_be_transferred' => sub {
Link Here
|
1554 |
'We get the same result also if we pass the from-library parameter.'); |
1554 |
'We get the same result also if we pass the from-library parameter.'); |
1555 |
}; |
1555 |
}; |
1556 |
|
1556 |
|
1557 |
subtest 'filter_by_for_hold' => sub { |
|
|
1558 |
plan tests => 12; |
1559 |
|
1560 |
Koha::CirculationRules->search( |
1561 |
{ |
1562 |
rule_name => 'holdallowed', |
1563 |
rule_value => 'not_allowed', |
1564 |
} |
1565 |
)->delete; |
1566 |
|
1567 |
my $biblio = $builder->build_sample_biblio; |
1568 |
is( $biblio->items->filter_by_for_hold->count, 0, 'no item yet' ); |
1569 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 1 } ); |
1570 |
is( $biblio->items->filter_by_for_hold->count, 0, 'no item for hold' ); |
1571 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 0 } ); |
1572 |
is( $biblio->items->filter_by_for_hold->count, 1, '1 item for hold' ); |
1573 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => -1 } ); |
1574 |
is( $biblio->items->filter_by_for_hold->count, 2, '2 items for hold' ); |
1575 |
|
1576 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, itemlost => 0 } ); |
1577 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, itemlost => 1 } ); |
1578 |
is( $biblio->items->filter_by_for_hold->count, 3, '3 items for hold - itemlost' ); |
1579 |
|
1580 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, withdrawn => 0 } ); |
1581 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, withdrawn => 1 } ); |
1582 |
is( $biblio->items->filter_by_for_hold->count, 4, '4 items for hold - withdrawn' ); |
1583 |
|
1584 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, damaged => 0 } ); |
1585 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, damaged => 1 } ); |
1586 |
t::lib::Mocks::mock_preference('AllowHoldsOnDamagedItems', 0); |
1587 |
is( $biblio->items->filter_by_for_hold->count, 5, '5 items for hold - not damaged if not AllowHoldsOnDamagedItems' ); |
1588 |
t::lib::Mocks::mock_preference('AllowHoldsOnDamagedItems', 1); |
1589 |
is( $biblio->items->filter_by_for_hold->count, 6, '6 items for hold - damaged if AllowHoldsOnDamagedItems' ); |
1590 |
|
1591 |
my $itemtype = $builder->build_object({ class => 'Koha::ItemTypes' }); |
1592 |
my $not_holdable_itemtype = $itemtype->itemtype; |
1593 |
$builder->build_sample_item( |
1594 |
{ |
1595 |
biblionumber => $biblio->biblionumber, |
1596 |
itype => $not_holdable_itemtype, |
1597 |
} |
1598 |
); |
1599 |
Koha::CirculationRules->set_rule( |
1600 |
{ |
1601 |
branchcode => undef, |
1602 |
itemtype => $not_holdable_itemtype, |
1603 |
rule_name => 'holdallowed', |
1604 |
rule_value => 'not_allowed', |
1605 |
} |
1606 |
); |
1607 |
is( $biblio->items->filter_by_for_hold->count, 6, '6 items for hold - holdallowed=not_allowed' ); |
1608 |
|
1609 |
# Remove rule, test notforloan on itemtype |
1610 |
Koha::CirculationRules->set_rule( |
1611 |
{ |
1612 |
branchcode => undef, |
1613 |
itemtype => $not_holdable_itemtype, |
1614 |
rule_name => 'holdallowed', |
1615 |
rule_value => undef, |
1616 |
} |
1617 |
); |
1618 |
is( $biblio->items->filter_by_for_hold->count, 7, '7 items for hold - rule deleted' ); |
1619 |
$itemtype->notforloan(1)->store; |
1620 |
is( $biblio->items->filter_by_for_hold->count, 6, '6 items for hold - notforloan' ); |
1621 |
|
1622 |
t::lib::Mocks::mock_preference('item-level_itypes', 0); |
1623 |
$biblio->biblioitem->itemtype($not_holdable_itemtype)->store; |
1624 |
is( $biblio->items->filter_by_for_hold->count, 0, '0 item-level_itypes=0' ); |
1625 |
|
1626 |
t::lib::Mocks::mock_preference('item-level_itypes', 1); |
1627 |
|
1628 |
$biblio->delete; |
1629 |
}; |
1630 |
|
1631 |
# Reset nb_of_items prior to testing delete |
1557 |
# Reset nb_of_items prior to testing delete |
1632 |
$nb_of_items = Koha::Items->search->count; |
1558 |
$nb_of_items = Koha::Items->search->count; |
1633 |
|
1559 |
|
Lines 1987-2002
subtest 'search_ordered' => sub {
Link Here
|
1987 |
|
1913 |
|
1988 |
subtest 'filter_by_for_hold' => sub { |
1914 |
subtest 'filter_by_for_hold' => sub { |
1989 |
|
1915 |
|
1990 |
plan tests => 13; |
1916 |
plan tests => 15; |
1991 |
|
1917 |
|
1992 |
$schema->storage->txn_begin; |
1918 |
$schema->storage->txn_begin; |
1993 |
|
1919 |
|
|
|
1920 |
# Set default rule |
1921 |
Koha::CirculationRules->set_rule( |
1922 |
{ |
1923 |
branchcode => undef, |
1924 |
itemtype => undef, |
1925 |
rule_name => 'holdallowed', |
1926 |
rule_value => 'not_allowed', |
1927 |
} |
1928 |
); |
1929 |
my $itemtype = $builder->build_object({ class => 'Koha::ItemTypes' }); |
1930 |
my $not_holdable_itemtype = $itemtype->itemtype; |
1931 |
my $itemtype2 = $builder->build_object({ class => 'Koha::ItemTypes' }); |
1932 |
my $holdable_itemtype = $itemtype2->itemtype; |
1933 |
Koha::CirculationRules->set_rule( |
1934 |
{ |
1935 |
branchcode => undef, |
1936 |
itemtype => $holdable_itemtype, |
1937 |
rule_name => 'holdallowed', |
1938 |
rule_value => 'from_any_library', |
1939 |
} |
1940 |
); |
1941 |
|
1994 |
my $biblio = $builder->build_sample_biblio; |
1942 |
my $biblio = $builder->build_sample_biblio; |
1995 |
my $library = $builder->build_object({ class => 'Koha::Libraries' }); |
1943 |
my $library = $builder->build_object({ class => 'Koha::Libraries' }); |
1996 |
|
|
|
1997 |
t::lib::Mocks::mock_preference('IndependentBranches', 0); # more robust tests |
1944 |
t::lib::Mocks::mock_preference('IndependentBranches', 0); # more robust tests |
1998 |
|
|
|
1999 |
is( $biblio->items->filter_by_for_hold->count, 0, 'no item yet' ); |
1945 |
is( $biblio->items->filter_by_for_hold->count, 0, 'no item yet' ); |
|
|
1946 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 0, itype => $not_holdable_itemtype } ); |
1947 |
is( $biblio->items->filter_by_for_hold->count, 0, 'default rule prevents hold' ); |
1948 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 0, itype => $holdable_itemtype } ); |
1949 |
is( $biblio->items->filter_by_for_hold->count, 1, 'hold allowed despite default rule' ); |
1950 |
|
1951 |
# Reset items and circ rules to remove default rule |
1952 |
$biblio->items->delete; |
1953 |
Koha::CirculationRules->search( |
1954 |
{ |
1955 |
rule_name => 'holdallowed', |
1956 |
rule_value => 'not_allowed', |
1957 |
} |
1958 |
)->delete; |
1959 |
|
2000 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 1 } ); |
1960 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 1 } ); |
2001 |
is( $biblio->items->filter_by_for_hold->count, 0, 'no item for hold' ); |
1961 |
is( $biblio->items->filter_by_for_hold->count, 0, 'no item for hold' ); |
2002 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 0 } ); |
1962 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 0 } ); |
Lines 2019-2026
subtest 'filter_by_for_hold' => sub {
Link Here
|
2019 |
t::lib::Mocks::mock_preference('AllowHoldsOnDamagedItems', 1); |
1979 |
t::lib::Mocks::mock_preference('AllowHoldsOnDamagedItems', 1); |
2020 |
is( $biblio->items->filter_by_for_hold->count, 6, '6 items for hold - damaged if AllowHoldsOnDamagedItems' ); |
1980 |
is( $biblio->items->filter_by_for_hold->count, 6, '6 items for hold - damaged if AllowHoldsOnDamagedItems' ); |
2021 |
|
1981 |
|
2022 |
my $itemtype = $builder->build_object({ class => 'Koha::ItemTypes' }); |
|
|
2023 |
my $not_holdable_itemtype = $itemtype->itemtype; |
2024 |
$builder->build_sample_item( |
1982 |
$builder->build_sample_item( |
2025 |
{ |
1983 |
{ |
2026 |
biblionumber => $biblio->biblionumber, |
1984 |
biblionumber => $biblio->biblionumber, |
2027 |
- |
|
|