View | Details | Raw Unified | Return to bug 10663
Collapse All | Expand All

(-)a/t/db_dependent/Circulation.t (-34 / +60 lines)
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
- 

Return to bug 10663