|
Lines 21-26
use Modern::Perl;
Link Here
|
| 21 |
|
21 |
|
| 22 |
use Test::More tests => 4; |
22 |
use Test::More tests => 4; |
| 23 |
|
23 |
|
|
|
24 |
use C4::Biblio; |
| 25 |
use C4::Items; |
| 24 |
use C4::Reserves; |
26 |
use C4::Reserves; |
| 25 |
|
27 |
|
| 26 |
use Koha::DateUtils qw( dt_from_string output_pref ); |
28 |
use Koha::DateUtils qw( dt_from_string output_pref ); |
|
Lines 131-135
subtest 'waiting_or_in_transit' => sub {
Link Here
|
| 131 |
is($biblio->has_items_waiting_or_intransit, 1, 'Item has transfer'); |
133 |
is($biblio->has_items_waiting_or_intransit, 1, 'Item has transfer'); |
| 132 |
}; |
134 |
}; |
| 133 |
|
135 |
|
|
|
136 |
subtest 'can_be_transferred' => sub { |
| 137 |
plan tests => 11; |
| 138 |
|
| 139 |
t::lib::Mocks::mock_preference('UseBranchTransferLimits', 1); |
| 140 |
t::lib::Mocks::mock_preference('BranchTransferLimitsType', 'itemtype'); |
| 141 |
|
| 142 |
my $library1 = $builder->build( { source => 'Branch' } )->{branchcode}; |
| 143 |
my $library2 = $builder->build( { source => 'Branch' } )->{branchcode}; |
| 144 |
my $library3 = $builder->build( { source => 'Branch' } )->{branchcode}; |
| 145 |
my ($bibnum, $title, $bibitemnum) = create_helper_biblio('ONLY1'); |
| 146 |
my ($item_bibnum, $item_bibitemnum, $itemnumber) |
| 147 |
= AddItem({ homebranch => $library1, holdingbranch => $library1 }, $bibnum); |
| 148 |
my $item = Koha::Items->find($itemnumber); |
| 149 |
my $biblio = Koha::Biblios->find($bibnum); |
| 150 |
|
| 151 |
is(Koha::Item::Transfer::Limits->search({ |
| 152 |
fromBranch => $library1, |
| 153 |
toBranch => $library2, |
| 154 |
})->count, 0, 'There are no transfer limits between libraries.'); |
| 155 |
ok($biblio->can_be_transferred({ to => $library2 }), |
| 156 |
'Some items of this biblio can be transferred between libraries.'); |
| 157 |
|
| 158 |
my $limit = Koha::Item::Transfer::Limit->new({ |
| 159 |
fromBranch => $library1, |
| 160 |
toBranch => $library2, |
| 161 |
itemtype => $item->effective_itemtype, |
| 162 |
})->store; |
| 163 |
is(Koha::Item::Transfer::Limits->search({ |
| 164 |
fromBranch => $library1, |
| 165 |
toBranch => $library2, |
| 166 |
})->count, 1, 'Given we have added a transfer limit that applies for all ' |
| 167 |
.'of this biblio\s items,'); |
| 168 |
is($biblio->can_be_transferred({ to => $library2 }), 0, |
| 169 |
'None of the items of biblio can no longer be transferred between ' |
| 170 |
.'libraries.'); |
| 171 |
is($biblio->can_be_transferred({ to => $library2, from => $library1 }), 0, |
| 172 |
'We get the same result also if we pass the from-library parameter.'); |
| 173 |
$item->holdingbranch($library2)->store; |
| 174 |
is($biblio->can_be_transferred({ to => $library2 }), 1, 'Given one of the ' |
| 175 |
.'items is already located at to-library, then the transfer is possible.'); |
| 176 |
$item->holdingbranch($library1)->store; |
| 177 |
my ($item_bibnum2, $item_bibitemnum2, $itemnumber2) |
| 178 |
= AddItem({ homebranch => $library1, holdingbranch => $library3 }, $bibnum); |
| 179 |
my $item2 = Koha::Items->find($itemnumber2); |
| 180 |
is($biblio->can_be_transferred({ to => $library2 }), 1, 'Given we added ' |
| 181 |
.'another item that should have no transfer limits applying on, then ' |
| 182 |
.'the transfer is possible.'); |
| 183 |
$item2->holdingbranch($library1)->store; |
| 184 |
is($biblio->can_be_transferred({ to => $library2 }), 0, 'Given all of items' |
| 185 |
.' of the biblio are from same, transfer limited library, then transfer' |
| 186 |
.' is not possible.'); |
| 187 |
eval { $biblio->can_be_transferred({ to => undef }); }; |
| 188 |
is(ref($@), 'Koha::Exceptions::Library::NotFound', 'Exception thrown when no' |
| 189 |
.' library given.'); |
| 190 |
eval { $biblio->can_be_transferred({ to => 'heaven' }); }; |
| 191 |
is(ref($@), 'Koha::Exceptions::Library::NotFound', 'Exception thrown when' |
| 192 |
.' invalid library is given.'); |
| 193 |
eval { $biblio->can_be_transferred({ to => $library2, from => 'hell' }); }; |
| 194 |
is(ref($@), 'Koha::Exceptions::Library::NotFound', 'Exception thrown when' |
| 195 |
.' invalid library is given.'); |
| 196 |
}; |
| 197 |
|
| 134 |
$schema->storage->txn_rollback; |
198 |
$schema->storage->txn_rollback; |
| 135 |
|
199 |
|
| 136 |
- |
200 |
# Helper method to set up a Biblio. |
|
|
201 |
sub create_helper_biblio { |
| 202 |
my $itemtype = shift; |
| 203 |
my ($bibnum, $title, $bibitemnum); |
| 204 |
my $bib = MARC::Record->new(); |
| 205 |
$title = 'Silence in the library'; |
| 206 |
$bib->append_fields( |
| 207 |
MARC::Field->new('100', ' ', ' ', a => 'Moffat, Steven'), |
| 208 |
MARC::Field->new('245', ' ', ' ', a => $title), |
| 209 |
MARC::Field->new('942', ' ', ' ', c => $itemtype), |
| 210 |
); |
| 211 |
return ($bibnum, $title, $bibitemnum) = AddBiblio($bib, ''); |
| 212 |
} |