|
Lines 845-852
subtest 'deletion' => sub {
Link Here
|
| 845 |
|
845 |
|
| 846 |
AddReturn( $item->barcode, $library->branchcode ); |
846 |
AddReturn( $item->barcode, $library->branchcode ); |
| 847 |
|
847 |
|
| 848 |
# book_reserved is tested in t/db_dependent/Reserves.t |
|
|
| 849 |
|
| 850 |
# not_same_branch |
848 |
# not_same_branch |
| 851 |
t::lib::Mocks::mock_preference('IndependentBranches', 1); |
849 |
t::lib::Mocks::mock_preference('IndependentBranches', 1); |
| 852 |
my $item_2 = $builder->build_sample_item({ library => $library_2->branchcode }); |
850 |
my $item_2 = $builder->build_sample_item({ library => $library_2->branchcode }); |
|
Lines 885-901
subtest 'deletion' => sub {
Link Here
|
| 885 |
|
883 |
|
| 886 |
} |
884 |
} |
| 887 |
|
885 |
|
| 888 |
{ # last_item_for_hold |
|
|
| 889 |
C4::Reserves::AddReserve({ branchcode => $patron->branchcode, borrowernumber => $patron->borrowernumber, biblionumber => $item->biblionumber }); |
| 890 |
is( |
| 891 |
@{$item->safe_to_delete->messages}[0]->message, |
| 892 |
'last_item_for_hold', |
| 893 |
'Item cannot be deleted if a biblio-level is placed on the biblio and there is only 1 item attached to the biblio' |
| 894 |
); |
| 895 |
# With another item attached to the biblio, the item can be deleted |
| 896 |
$builder->build_sample_item({ biblionumber => $item->biblionumber }); |
| 897 |
} |
| 898 |
|
| 899 |
ok( |
886 |
ok( |
| 900 |
$item->safe_to_delete, |
887 |
$item->safe_to_delete, |
| 901 |
'Koha::Item->safe_to_delete shows item safe to delete' |
888 |
'Koha::Item->safe_to_delete shows item safe to delete' |
|
Lines 909-914
subtest 'deletion' => sub {
Link Here
|
| 909 |
"Koha::Item->safe_delete should delete item if safe_to_delete returns true" |
896 |
"Koha::Item->safe_delete should delete item if safe_to_delete returns true" |
| 910 |
); |
897 |
); |
| 911 |
|
898 |
|
|
|
899 |
subtest 'holds tests' => sub { |
| 900 |
|
| 901 |
plan tests => 9; |
| 902 |
|
| 903 |
# to avoid noise |
| 904 |
t::lib::Mocks::mock_preference( 'IndependentBranches', 0 ); |
| 905 |
|
| 906 |
$schema->storage->txn_begin; |
| 907 |
|
| 908 |
my $item = $builder->build_sample_item; |
| 909 |
|
| 910 |
my $processing = $builder->build_object( { class => 'Koha::Holds', value => { itemnumber => $item->id, itemnumber => $item->id, found => 'P' } } ); |
| 911 |
my $safe_to_delete = $item->safe_to_delete; |
| 912 |
|
| 913 |
ok( !$safe_to_delete, 'Cannot delete' ); |
| 914 |
is( |
| 915 |
@{ $safe_to_delete->messages }[0]->message, |
| 916 |
'book_reserved', |
| 917 |
'Koha::Item->safe_to_delete reports a in processing hold blocks deletion' |
| 918 |
); |
| 919 |
|
| 920 |
$processing->delete; |
| 921 |
|
| 922 |
my $in_transit = $builder->build_object( { class => 'Koha::Holds', value => { itemnumber => $item->id, itemnumber => $item->id, found => 'T' } } ); |
| 923 |
$safe_to_delete = $item->safe_to_delete; |
| 924 |
|
| 925 |
ok( !$safe_to_delete, 'Cannot delete' ); |
| 926 |
is( |
| 927 |
@{ $safe_to_delete->messages }[0]->message, |
| 928 |
'book_reserved', |
| 929 |
'Koha::Item->safe_to_delete reports a in transit hold blocks deletion' |
| 930 |
); |
| 931 |
|
| 932 |
$in_transit->delete; |
| 933 |
|
| 934 |
my $waiting = $builder->build_object( { class => 'Koha::Holds', value => { itemnumber => $item->id, itemnumber => $item->id, found => 'W' } } ); |
| 935 |
$safe_to_delete = $item->safe_to_delete; |
| 936 |
|
| 937 |
ok( !$safe_to_delete, 'Cannot delete' ); |
| 938 |
is( |
| 939 |
@{ $safe_to_delete->messages }[0]->message, |
| 940 |
'book_reserved', |
| 941 |
'Koha::Item->safe_to_delete reports a waiting hold blocks deletion' |
| 942 |
); |
| 943 |
|
| 944 |
$waiting->delete; |
| 945 |
|
| 946 |
# Add am unfilled biblio-level hold to catch the 'last_item_for_hold' use case |
| 947 |
$builder->build_object( { class => 'Koha::Holds', value => { biblionumber => $item->biblionumber, itemnumber => undef, found => undef } } ); |
| 948 |
|
| 949 |
$safe_to_delete = $item->safe_to_delete; |
| 950 |
|
| 951 |
ok( !$safe_to_delete ); |
| 952 |
|
| 953 |
is( |
| 954 |
@{ $safe_to_delete->messages}[0]->message, |
| 955 |
'last_item_for_hold', |
| 956 |
'Item cannot be deleted if a biblio-level is placed on the biblio and there is only 1 item attached to the biblio' |
| 957 |
); |
| 958 |
|
| 959 |
my $extra_item = $builder->build_sample_item({ biblionumber => $item->biblionumber }); |
| 960 |
|
| 961 |
ok( $item->safe_to_delete ); |
| 962 |
|
| 963 |
$schema->storage->txn_rollback; |
| 964 |
}; |
| 965 |
|
| 912 |
$schema->storage->txn_rollback; |
966 |
$schema->storage->txn_rollback; |
| 913 |
}; |
967 |
}; |
| 914 |
|
968 |
|
| 915 |
- |
|
|