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 |
} |