|
Lines 1510-1582
subtest 'can_be_transferred' => sub {
Link Here
|
| 1510 |
'We get the same result also if we pass the from-library parameter.'); |
1510 |
'We get the same result also if we pass the from-library parameter.'); |
| 1511 |
}; |
1511 |
}; |
| 1512 |
|
1512 |
|
| 1513 |
subtest 'filter_by_for_hold' => sub { |
|
|
| 1514 |
plan tests => 12; |
| 1515 |
|
| 1516 |
my $biblio = $builder->build_sample_biblio; |
| 1517 |
is( $biblio->items->filter_by_for_hold->count, 0, 'no item yet' ); |
| 1518 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 1 } ); |
| 1519 |
is( $biblio->items->filter_by_for_hold->count, 0, 'no item for hold' ); |
| 1520 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 0 } ); |
| 1521 |
is( $biblio->items->filter_by_for_hold->count, 1, '1 item for hold' ); |
| 1522 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => -1 } ); |
| 1523 |
is( $biblio->items->filter_by_for_hold->count, 2, '2 items for hold' ); |
| 1524 |
|
| 1525 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, itemlost => 0 } ); |
| 1526 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, itemlost => 1 } ); |
| 1527 |
is( $biblio->items->filter_by_for_hold->count, 3, '3 items for hold - itemlost' ); |
| 1528 |
|
| 1529 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, withdrawn => 0 } ); |
| 1530 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, withdrawn => 1 } ); |
| 1531 |
is( $biblio->items->filter_by_for_hold->count, 4, '4 items for hold - withdrawn' ); |
| 1532 |
|
| 1533 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, damaged => 0 } ); |
| 1534 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, damaged => 1 } ); |
| 1535 |
t::lib::Mocks::mock_preference('AllowHoldsOnDamagedItems', 0); |
| 1536 |
is( $biblio->items->filter_by_for_hold->count, 5, '5 items for hold - not damaged if not AllowHoldsOnDamagedItems' ); |
| 1537 |
t::lib::Mocks::mock_preference('AllowHoldsOnDamagedItems', 1); |
| 1538 |
is( $biblio->items->filter_by_for_hold->count, 6, '6 items for hold - damaged if AllowHoldsOnDamagedItems' ); |
| 1539 |
|
| 1540 |
my $itemtype = $builder->build_object({ class => 'Koha::ItemTypes' }); |
| 1541 |
my $not_holdable_itemtype = $itemtype->itemtype; |
| 1542 |
$builder->build_sample_item( |
| 1543 |
{ |
| 1544 |
biblionumber => $biblio->biblionumber, |
| 1545 |
itype => $not_holdable_itemtype, |
| 1546 |
} |
| 1547 |
); |
| 1548 |
Koha::CirculationRules->set_rule( |
| 1549 |
{ |
| 1550 |
branchcode => undef, |
| 1551 |
itemtype => $not_holdable_itemtype, |
| 1552 |
rule_name => 'holdallowed', |
| 1553 |
rule_value => 'not_allowed', |
| 1554 |
} |
| 1555 |
); |
| 1556 |
is( $biblio->items->filter_by_for_hold->count, 6, '6 items for hold - holdallowed=not_allowed' ); |
| 1557 |
|
| 1558 |
# Remove rule, test notforloan on itemtype |
| 1559 |
Koha::CirculationRules->set_rule( |
| 1560 |
{ |
| 1561 |
branchcode => undef, |
| 1562 |
itemtype => $not_holdable_itemtype, |
| 1563 |
rule_name => 'holdallowed', |
| 1564 |
rule_value => undef, |
| 1565 |
} |
| 1566 |
); |
| 1567 |
is( $biblio->items->filter_by_for_hold->count, 7, '7 items for hold - rule deleted' ); |
| 1568 |
$itemtype->notforloan(1)->store; |
| 1569 |
is( $biblio->items->filter_by_for_hold->count, 6, '6 items for hold - notforloan' ); |
| 1570 |
|
| 1571 |
t::lib::Mocks::mock_preference('item-level_itypes', 0); |
| 1572 |
$biblio->biblioitem->itemtype($not_holdable_itemtype)->store; |
| 1573 |
is( $biblio->items->filter_by_for_hold->count, 0, '0 item-level_itypes=0' ); |
| 1574 |
|
| 1575 |
t::lib::Mocks::mock_preference('item-level_itypes', 1); |
| 1576 |
|
| 1577 |
$biblio->delete; |
| 1578 |
}; |
| 1579 |
|
| 1580 |
# Reset nb_of_items prior to testing delete |
1513 |
# Reset nb_of_items prior to testing delete |
| 1581 |
$nb_of_items = Koha::Items->search->count; |
1514 |
$nb_of_items = Koha::Items->search->count; |
| 1582 |
|
1515 |
|
|
Lines 1937-1939
subtest 'search_ordered' => sub {
Link Here
|
| 1937 |
$schema->storage->txn_rollback; |
1870 |
$schema->storage->txn_rollback; |
| 1938 |
|
1871 |
|
| 1939 |
}; |
1872 |
}; |
| 1940 |
- |
1873 |
|
|
|
1874 |
subtest 'filter_by_for_hold' => sub { |
| 1875 |
|
| 1876 |
plan tests => 13; |
| 1877 |
|
| 1878 |
$schema->storage->txn_begin; |
| 1879 |
|
| 1880 |
my $biblio = $builder->build_sample_biblio; |
| 1881 |
my $library = $builder->build_object({ class => 'Koha::Libraries' }); |
| 1882 |
|
| 1883 |
t::lib::Mocks::mock_preference('IndependentBranches', 0); # more robust tests |
| 1884 |
|
| 1885 |
is( $biblio->items->filter_by_for_hold->count, 0, 'no item yet' ); |
| 1886 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 1 } ); |
| 1887 |
is( $biblio->items->filter_by_for_hold->count, 0, 'no item for hold' ); |
| 1888 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 0 } ); |
| 1889 |
is( $biblio->items->filter_by_for_hold->count, 1, '1 item for hold' ); |
| 1890 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => -1 } ); |
| 1891 |
is( $biblio->items->filter_by_for_hold->count, 2, '2 items for hold' ); |
| 1892 |
|
| 1893 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, itemlost => 0, library => $library->id } ); |
| 1894 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, itemlost => 1, library => $library->id } ); |
| 1895 |
is( $biblio->items->filter_by_for_hold->count, 3, '3 items for hold - itemlost' ); |
| 1896 |
|
| 1897 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, withdrawn => 0, library => $library->id } ); |
| 1898 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, withdrawn => 1, library => $library->id } ); |
| 1899 |
is( $biblio->items->filter_by_for_hold->count, 4, '4 items for hold - withdrawn' ); |
| 1900 |
|
| 1901 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, damaged => 0 } ); |
| 1902 |
$builder->build_sample_item( { biblionumber => $biblio->biblionumber, damaged => 1 } ); |
| 1903 |
t::lib::Mocks::mock_preference('AllowHoldsOnDamagedItems', 0); |
| 1904 |
is( $biblio->items->filter_by_for_hold->count, 5, '5 items for hold - not damaged if not AllowHoldsOnDamagedItems' ); |
| 1905 |
t::lib::Mocks::mock_preference('AllowHoldsOnDamagedItems', 1); |
| 1906 |
is( $biblio->items->filter_by_for_hold->count, 6, '6 items for hold - damaged if AllowHoldsOnDamagedItems' ); |
| 1907 |
|
| 1908 |
my $itemtype = $builder->build_object({ class => 'Koha::ItemTypes' }); |
| 1909 |
my $not_holdable_itemtype = $itemtype->itemtype; |
| 1910 |
$builder->build_sample_item( |
| 1911 |
{ |
| 1912 |
biblionumber => $biblio->biblionumber, |
| 1913 |
itype => $not_holdable_itemtype, |
| 1914 |
} |
| 1915 |
); |
| 1916 |
Koha::CirculationRules->set_rule( |
| 1917 |
{ |
| 1918 |
branchcode => undef, |
| 1919 |
itemtype => $not_holdable_itemtype, |
| 1920 |
rule_name => 'holdallowed', |
| 1921 |
rule_value => 'not_allowed', |
| 1922 |
} |
| 1923 |
); |
| 1924 |
is( $biblio->items->filter_by_for_hold->count, 6, '6 items for hold - holdallowed=not_allowed' ); |
| 1925 |
|
| 1926 |
# Remove rule, test notforloan on itemtype |
| 1927 |
Koha::CirculationRules->set_rule( |
| 1928 |
{ |
| 1929 |
branchcode => undef, |
| 1930 |
itemtype => $not_holdable_itemtype, |
| 1931 |
rule_name => 'holdallowed', |
| 1932 |
rule_value => undef, |
| 1933 |
} |
| 1934 |
); |
| 1935 |
is( $biblio->items->filter_by_for_hold->count, 7, '7 items for hold - rule deleted' ); |
| 1936 |
$itemtype->notforloan(1)->store; |
| 1937 |
is( $biblio->items->filter_by_for_hold->count, 6, '6 items for hold - notforloan' ); |
| 1938 |
|
| 1939 |
{ |
| 1940 |
my $mock_context = Test::MockModule->new('C4::Context'); |
| 1941 |
$mock_context->mock( 'only_my_library', 1 ); |
| 1942 |
$mock_context->mock( 'mybranch', $library->id ); |
| 1943 |
is( $biblio->items->filter_by_for_hold->count, 2, '2 items for hold, filtered by IndependentBranches' ); |
| 1944 |
} |
| 1945 |
|
| 1946 |
t::lib::Mocks::mock_preference('item-level_itypes', 0); |
| 1947 |
$biblio->biblioitem->itemtype($not_holdable_itemtype)->store; |
| 1948 |
is( $biblio->items->filter_by_for_hold->count, 0, '0 item-level_itypes=0' ); |
| 1949 |
|
| 1950 |
t::lib::Mocks::mock_preference('item-level_itypes', 1); |
| 1951 |
|
| 1952 |
$schema->storage->txn_rollback; |
| 1953 |
}; |