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