Lines 9-15
use C4::Items;
Link Here
|
9 |
use C4::Members; |
9 |
use C4::Members; |
10 |
use C4::Reserves; |
10 |
use C4::Reserves; |
11 |
|
11 |
|
12 |
use Test::More tests => 20; |
12 |
use Test::More tests => 30; |
13 |
|
13 |
|
14 |
BEGIN { |
14 |
BEGIN { |
15 |
use_ok('C4::Circulation'); |
15 |
use_ok('C4::Circulation'); |
Lines 142-148
C4::Context->dbh->do("DELETE FROM accountlines WHERE borrowernumber IN ( SELECT
Link Here
|
142 |
C4::Context->dbh->do("DELETE FROM borrowers WHERE cardnumber = '99999999999'"); |
142 |
C4::Context->dbh->do("DELETE FROM borrowers WHERE cardnumber = '99999999999'"); |
143 |
|
143 |
|
144 |
{ |
144 |
{ |
145 |
# CanBookBeRenewed tests |
145 |
# CanBookBeRenewed tests |
146 |
|
146 |
|
147 |
# Generate test biblio |
147 |
# Generate test biblio |
148 |
my $biblio = MARC::Record->new(); |
148 |
my $biblio = MARC::Record->new(); |
Lines 152-159
C4::Context->dbh->do("DELETE FROM borrowers WHERE cardnumber = '99999999999'");
Link Here
|
152 |
MARC::Field->new('245', ' ', ' ', a => $title), |
152 |
MARC::Field->new('245', ' ', ' ', a => $title), |
153 |
); |
153 |
); |
154 |
|
154 |
|
155 |
my ($biblionumber, $biblioitemnumber); |
155 |
my ($biblionumber, $biblioitemnumber) = AddBiblio($biblio, ''); |
156 |
($biblionumber, $biblioitemnumber) = AddBiblio($biblio, ''); |
|
|
157 |
|
156 |
|
158 |
my $barcode = 'R00000342'; |
157 |
my $barcode = 'R00000342'; |
159 |
my $branch = 'MPL'; |
158 |
my $branch = 'MPL'; |
Lines 161-179
C4::Context->dbh->do("DELETE FROM borrowers WHERE cardnumber = '99999999999'");
Link Here
|
161 |
my ($item_bibnum, $item_bibitemnum, $itemnumber) = |
160 |
my ($item_bibnum, $item_bibitemnum, $itemnumber) = |
162 |
AddItem({ homebranch => $branch, |
161 |
AddItem({ homebranch => $branch, |
163 |
holdingbranch => $branch, |
162 |
holdingbranch => $branch, |
164 |
barcode => $barcode } , $biblionumber); |
163 |
barcode => $barcode, } , $biblionumber); |
165 |
|
164 |
|
166 |
# Create a borrower |
165 |
my $barcode2 = 'R00000343'; |
|
|
166 |
my ($item_bibnum2, $item_bibitemnum2, $itemnumber2) = |
167 |
AddItem({ homebranch => $branch, |
168 |
holdingbranch => $branch, |
169 |
barcode => $barcode2, } , $biblionumber); |
170 |
|
171 |
# Create 2 borrowers |
167 |
my %renewing_borrower_data = ( |
172 |
my %renewing_borrower_data = ( |
168 |
firstname => 'Renewal', |
173 |
firstname => 'John', |
169 |
surname => 'John', |
174 |
surname => 'Renewal', |
170 |
categorycode => 'S', |
175 |
categorycode => 'S', |
171 |
branchcode => $branch, |
176 |
branchcode => $branch, |
172 |
); |
177 |
); |
173 |
|
178 |
|
174 |
my %reserving_borrower_data = ( |
179 |
my %reserving_borrower_data = ( |
175 |
firstname => 'Reservation', |
180 |
firstname => 'Katrin', |
176 |
surname => 'Katrin', |
181 |
surname => 'Reservation', |
177 |
categorycode => 'S', |
182 |
categorycode => 'S', |
178 |
branchcode => $branch, |
183 |
branchcode => $branch, |
179 |
); |
184 |
); |
Lines 192-242
C4::Context->dbh->do("DELETE FROM borrowers WHERE cardnumber = '99999999999'");
Link Here
|
192 |
my $checkitem = undef; |
197 |
my $checkitem = undef; |
193 |
my $found = undef; |
198 |
my $found = undef; |
194 |
|
199 |
|
195 |
my $now = DateTime->now(); |
200 |
my $datedue = AddIssue( $renewing_borrower, $barcode); |
196 |
my $cancelreserve = 1; |
201 |
is (defined $datedue, 1, "Item 1 checked out, due date: $datedue"); |
|
|
202 |
|
203 |
my $datedue2 = AddIssue( $renewing_borrower, $barcode2); |
204 |
is (defined $datedue2, 1, "Item 2 checked out, due date: $datedue2"); |
205 |
|
206 |
my $borrowing_borrowernumber = GetItemIssue($itemnumber)->{borrowernumber}; |
207 |
is ($borrowing_borrowernumber, $renewing_borrowernumber, "Item checked out to $renewing_borrower->{firstname} $renewing_borrower->{surname}"); |
197 |
|
208 |
|
198 |
AddIssue( $renewing_borrower, $barcode, $now, $cancelreserve, $now ); |
209 |
my ( $renewokay, $error ) = CanBookBeRenewed($renewing_borrowernumber, $itemnumber, 1); |
|
|
210 |
is( $renewokay, 1, 'Can renew, no holds for this title or item'); |
199 |
|
211 |
|
200 |
# my ( $renewokay, $error ) = CanBookBeRenewed($renewing_borrowernumber, $itemnumber); |
|
|
201 |
# is( $renewokay, 1, 'Can renew, book not reserved'); |
202 |
|
212 |
|
203 |
diag("Biblio-level reserve, renewal test"); |
213 |
diag("Biblio-level hold, renewal test"); |
204 |
AddReserve( |
214 |
AddReserve( |
205 |
$branch, $reserving_borrowernumber, $biblionumber, |
215 |
$branch, $reserving_borrowernumber, $biblionumber, |
206 |
$constraint, $bibitems, $priority, $resdate, $expdate, $notes, |
216 |
$constraint, $bibitems, $priority, $resdate, $expdate, $notes, |
207 |
$title, $checkitem, $found |
217 |
$title, $checkitem, $found |
208 |
); |
218 |
); |
209 |
|
219 |
|
210 |
my ( $renewokay, $error ) = CanBookBeRenewed($renewing_borrowernumber, $itemnumber); |
220 |
( $renewokay, $error ) = CanBookBeRenewed($renewing_borrowernumber, $itemnumber); |
|
|
221 |
is( $renewokay, 0, '(Bug 10663) Cannot renew, reserved'); |
222 |
is( $error, 'on_reserve', '(Bug 10663) Cannot renew, reserved (returned error is on_reserve)'); |
211 |
|
223 |
|
212 |
is( $renewokay, 0, '(Bug 10663) Cannot renew, item reserved'); |
224 |
( $renewokay, $error ) = CanBookBeRenewed($renewing_borrowernumber, $itemnumber2); |
213 |
is( $error, 'on_reserve', '(Bug 10663) Cannot renew, item reserved (returned error is on_reserve'); |
225 |
is( $renewokay, 0, '(Bug 10663) Cannot renew, reserved'); |
|
|
226 |
is( $error, 'on_reserve', '(Bug 10663) Cannot renew, reserved (returned error is on_reserve)'); |
214 |
|
227 |
|
215 |
CancelReserve({ |
228 |
my $reserveid = C4::Reserves::GetReserveId({ biblionumber => $biblionumber, borrowernumber => $reserving_borrowernumber}); |
216 |
biblionumber => $biblionumber, |
229 |
CancelReserve({ reserve_id => $reserveid }); |
217 |
borrowernumber => $reserving_borrowernumber, |
|
|
218 |
}); |
219 |
|
230 |
|
220 |
|
231 |
|
221 |
diag("Item-level reserve, renewal test"); |
232 |
diag("Item-level hold, renewal test"); |
222 |
AddReserve( |
233 |
AddReserve( |
223 |
$branch, $reserving_borrowernumber, $biblionumber, |
234 |
$branch, $reserving_borrowernumber, $biblionumber, |
224 |
$constraint, $bibitems, $priority, $resdate, $expdate, $notes, |
235 |
$constraint, $bibitems, $priority, $resdate, $expdate, $notes, |
225 |
$title, $itemnumber, $found |
236 |
$title, $itemnumber, $found |
226 |
); |
237 |
); |
227 |
|
238 |
|
228 |
( $renewokay, $error ) = CanBookBeRenewed($renewing_borrowernumber, $itemnumber); |
239 |
( $renewokay, $error ) = CanBookBeRenewed($renewing_borrowernumber, $itemnumber, 1); |
229 |
|
|
|
230 |
is( $renewokay, 0, '(Bug 10663) Cannot renew, item reserved'); |
240 |
is( $renewokay, 0, '(Bug 10663) Cannot renew, item reserved'); |
231 |
is( $error, 'on_reserve', '(Bug 10663) Cannot renew, item reserved (returned error is on_reserve'); |
241 |
is( $error, 'on_reserve', '(Bug 10663) Cannot renew, item reserved (returned error is on_reserve)'); |
232 |
|
242 |
|
233 |
CancelReserve({ |
243 |
( $renewokay, $error ) = CanBookBeRenewed($renewing_borrowernumber, $itemnumber2, 1); |
234 |
biblionumber => $biblionumber, |
244 |
is( $renewokay, 1, 'Can renew item 2, item-level hold is on item 1'); |
235 |
borrowernumber => $reserving_borrowernumber, |
|
|
236 |
itemnumber => $itemnumber |
237 |
}); |
238 |
|
245 |
|
239 |
} |
|
|
240 |
|
246 |
|
|
|
247 |
diag("Items can't fill hold for reasons"); |
248 |
ModItem({ notforloan => 1 }, $biblionumber, $itemnumber); |
249 |
( $renewokay, $error ) = CanBookBeRenewed($renewing_borrowernumber, $itemnumber, 1); |
250 |
is( $renewokay, 1, 'Can renew, item is marked not for loan, hold does not block'); |
251 |
ModItem({ notforloan => 0, itype => '' }, $biblionumber, $itemnumber,1); |
252 |
|
253 |
# FIXME: Add more for itemtype not for loan etc. |
254 |
|
255 |
$reserveid = C4::Reserves::GetReserveId({ biblionumber => $biblionumber, itemnumber => $itemnumber, borrowernumber => $reserving_borrowernumber}); |
256 |
CancelReserve({ reserve_id => $reserveid }); |
257 |
|
258 |
|
259 |
diag("Too many renewals"); |
260 |
|
261 |
# FIXME: Check with circulation rules and renewalsallowed set properly configured |
262 |
|
263 |
( $renewokay, $error ) = CanBookBeRenewed($renewing_borrowernumber, $itemnumber); |
264 |
is( $renewokay, 0, 'Cannot renew, 0 renewals allowed'); |
265 |
is( $error, 'too_many', 'Cannot renew, 0 renewals allowed (returned code is too_many)'); |
266 |
|
267 |
} |
241 |
|
268 |
|
242 |
$dbh->rollback; |
269 |
$dbh->rollback; |
243 |
- |
|
|