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

(-)a/t/db_dependent/Koha/Checkouts/ReturnClaim.t (-2 / +182 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 2;
20
use Test::More tests => 6;
21
use Test::Exception;
21
use Test::Exception;
22
22
23
use Koha::Database;
23
use Koha::Database;
Lines 284-286 subtest "resolve() tests" => sub { Link Here
284
284
285
    $schema->storage->txn_rollback;
285
    $schema->storage->txn_rollback;
286
};
286
};
287
- 
287
288
subtest 'item() tests' => sub {
289
290
    plan tests => 3;
291
292
    $schema->storage->txn_begin;
293
294
    my $librarian = $builder->build_object({ class => 'Koha::Patrons' });
295
    my $patron    = $builder->build_object({ class => 'Koha::Patrons' });
296
    my $item      = $builder->build_sample_item;
297
    my $checkout = $builder->build_object(
298
        {
299
            class => 'Koha::Checkouts',
300
            value => {
301
                borrowernumber => $patron->borrowernumber,
302
                itemnumber     => $item->itemnumber,
303
                branchcode     => $patron->branchcode
304
            }
305
        }
306
    );
307
308
    my $claim = Koha::Checkouts::ReturnClaim->new(
309
        {
310
            issue_id       => $checkout->id,
311
            itemnumber     => $checkout->itemnumber,
312
            borrowernumber => $checkout->borrowernumber,
313
            notes          => 'Some notes',
314
            created_by     => $librarian->borrowernumber
315
        }
316
    )->store;
317
318
    my $return_claim_item = $claim->item;
319
    is( ref( $return_claim_item ), 'Koha::Item', 'Koha::Checkouts::ReturnClaim->item should return a Koha::Item' );
320
    is( $claim->itemnumber, $return_claim_item->itemnumber, 'Koha::Checkouts::ReturnClaim->item should return the correct item' );
321
322
    my $itemnumber = $item->itemnumber;
323
    $checkout->delete; # Required to allow deletion of item
324
    $item->delete;
325
326
    my $claims = Koha::Checkouts::ReturnClaims->search({ itemnumber => $itemnumber });
327
    is( $claims->count, 0, 'Koha::Checkouts::ReturnClaim is deleted on item deletion' );
328
329
    $schema->storage->txn_rollback;
330
};
331
332
subtest 'patron() tests' => sub {
333
334
    plan tests => 3;
335
336
    $schema->storage->txn_begin;
337
338
    my $librarian = $builder->build_object({ class => 'Koha::Patrons' });
339
    my $patron    = $builder->build_object({ class => 'Koha::Patrons' });
340
    my $item      = $builder->build_sample_item;
341
    my $checkout = $builder->build_object(
342
        {
343
            class => 'Koha::Checkouts',
344
            value => {
345
                borrowernumber => $patron->borrowernumber,
346
                itemnumber     => $item->itemnumber,
347
                branchcode     => $patron->branchcode
348
            }
349
        }
350
    );
351
352
    my $claim = Koha::Checkouts::ReturnClaim->new(
353
        {
354
            issue_id       => $checkout->id,
355
            itemnumber     => $checkout->itemnumber,
356
            borrowernumber => $checkout->borrowernumber,
357
            notes          => 'Some notes',
358
            created_by     => $librarian->borrowernumber
359
        }
360
    )->store;
361
362
    my $return_claim_patron = $claim->patron;
363
    is( ref( $return_claim_patron ), 'Koha::Patron', 'Koha::Checkouts::ReturnClaim->patron should return a Koha::Patron' );
364
    is( $claim->borrowernumber, $return_claim_patron->borrowernumber, 'Koha::Checkouts::ReturnClaim->patron should return the correct borrower' );
365
366
    my $borrowernumber = $patron->borrowernumber;
367
    $checkout->delete; # Required to allow deletion of patron
368
    $patron->delete;
369
370
    my $claims = Koha::Checkouts::ReturnClaims->search({ borrowernumber => $borrowernumber });
371
    is( $claims->count, 0, 'Koha::Checkouts::ReturnClaim is deleted on borrower deletion' );
372
373
    $schema->storage->txn_rollback;
374
};
375
376
subtest 'old_checkout() tests' => sub {
377
378
    plan tests => 4;
379
380
    $schema->storage->txn_begin;
381
382
    my $librarian = $builder->build_object({ class => 'Koha::Patrons' });
383
    my $patron    = $builder->build_object({ class => 'Koha::Patrons' });
384
    my $item      = $builder->build_sample_item;
385
    my $old_checkout = $builder->build_object(
386
        {
387
            class => 'Koha::Old::Checkouts',
388
            value => {
389
                borrowernumber => $patron->borrowernumber,
390
                itemnumber     => $item->itemnumber,
391
                branchcode     => $patron->branchcode
392
            }
393
        }
394
    );
395
396
    my $claim = Koha::Checkouts::ReturnClaim->new(
397
        {
398
            issue_id       => $old_checkout->id,
399
            itemnumber     => $old_checkout->itemnumber,
400
            borrowernumber => $old_checkout->borrowernumber,
401
            notes          => 'Some notes',
402
            created_by     => $librarian->borrowernumber
403
        }
404
    )->store;
405
406
    my $return_claim_old_checkout = $claim->old_checkout;
407
    is( ref( $return_claim_old_checkout ), 'Koha::Old::Checkout', 'Koha::Checkouts::ReturnClaim->old_checkout should return a Koha::Old::Checkout' );
408
    is( $claim->issue_id, $return_claim_old_checkout->issue_id, 'Koha::Checkouts::ReturnClaim->old_checkout should return the correct borrower' );
409
410
    my $issue_id = $old_checkout->issue_id;
411
    $old_checkout->delete;
412
413
    my $claims = Koha::Checkouts::ReturnClaims->search({ issue_id => $issue_id });
414
    is( $claims->count, 1, 'Koha::Checkouts::ReturnClaim remains on old_checkout deletion' );
415
    # FIXME: Should we actually set null on OldCheckout deletion?
416
417
    $claim->issue_id(undef)->store;
418
    is( $claim->old_checkout, undef, 'Koha::Checkouts::ReturnClaim->old_checkout should return undef if no old_checkout linked' );
419
420
    $schema->storage->txn_rollback;
421
};
422
423
subtest 'checkout() tests' => sub {
424
425
    plan tests => 4;
426
427
    $schema->storage->txn_begin;
428
429
    my $librarian = $builder->build_object({ class => 'Koha::Patrons' });
430
    my $patron    = $builder->build_object({ class => 'Koha::Patrons' });
431
    my $item      = $builder->build_sample_item;
432
    my $checkout = $builder->build_object(
433
        {
434
            class => 'Koha::Checkouts',
435
            value => {
436
                borrowernumber => $patron->borrowernumber,
437
                itemnumber     => $item->itemnumber,
438
                branchcode     => $patron->branchcode
439
            }
440
        }
441
    );
442
443
    my $claim = Koha::Checkouts::ReturnClaim->new(
444
        {
445
            issue_id       => $checkout->id,
446
            itemnumber     => $checkout->itemnumber,
447
            borrowernumber => $checkout->borrowernumber,
448
            notes          => 'Some notes',
449
            created_by     => $librarian->borrowernumber
450
        }
451
    )->store;
452
453
    my $return_claim_checkout = $claim->checkout;
454
    is( ref( $return_claim_checkout ), 'Koha::Checkout', 'Koha::Checkouts::ReturnClaim->checkout should return a Koha::Checkout' );
455
    is( $claim->issue_id, $return_claim_checkout->issue_id, 'Koha::Checkouts::ReturnClaim->checkout should return the correct borrower' );
456
457
    my $issue_id = $checkout->issue_id;
458
    $checkout->delete;
459
460
    my $claims = Koha::Checkouts::ReturnClaims->search({ issue_id => $issue_id });
461
    is( $claims->count, 1, 'Koha::Checkouts::ReturnClaim remains on checkout deletion' );
462
463
    $claim->issue_id(undef)->store;
464
    is( $claim->checkout, undef, 'Koha::Checkouts::ReturnClaim->checkout should return undef if no checkout linked' );
465
466
    $schema->storage->txn_rollback;
467
};

Return to bug 29495