Lines 20-26
Link Here
|
20 |
use Modern::Perl; |
20 |
use Modern::Perl; |
21 |
use utf8; |
21 |
use utf8; |
22 |
|
22 |
|
23 |
use Test::More tests => 33; |
23 |
use Test::More tests => 34; |
24 |
use Test::Exception; |
24 |
use Test::Exception; |
25 |
use Test::MockModule; |
25 |
use Test::MockModule; |
26 |
|
26 |
|
Lines 2519-2521
subtest 'find_booking' => sub {
Link Here
|
2519 |
|
2519 |
|
2520 |
$schema->storage->txn_rollback; |
2520 |
$schema->storage->txn_rollback; |
2521 |
}; |
2521 |
}; |
2522 |
- |
2522 |
|
|
|
2523 |
subtest 'check_booking tests' => sub { |
2524 |
plan tests => 5; |
2525 |
|
2526 |
$schema->storage->txn_begin; |
2527 |
|
2528 |
my $biblio = $builder->build_sample_biblio(); |
2529 |
my $item = $builder->build_sample_item( { biblionumber => $biblio->biblionumber, bookable => 1 } ); |
2530 |
my $can_book = $item->check_booking( |
2531 |
{ |
2532 |
start_date => dt_from_string(), |
2533 |
end_date => dt_from_string()->add( days => 7 ) |
2534 |
} |
2535 |
); |
2536 |
|
2537 |
is( |
2538 |
$can_book, 1, |
2539 |
"True returned from Koha::Item->check_booking if there are no bookings that would clash" |
2540 |
); |
2541 |
|
2542 |
my $start_1 = dt_from_string()->subtract( days => 7 ); |
2543 |
my $end_1 = dt_from_string()->subtract( days => 1 ); |
2544 |
my $start_2 = dt_from_string(); |
2545 |
my $end_2 = dt_from_string()->add( days => 7 ); |
2546 |
my $start_3 = dt_from_string()->add( days => 8 ); |
2547 |
my $end_3 = dt_from_string()->add( days => 16 ); |
2548 |
|
2549 |
# Past booking |
2550 |
my $booking1 = $builder->build_object( |
2551 |
{ |
2552 |
class => 'Koha::Bookings', |
2553 |
value => { |
2554 |
biblio_id => $biblio->biblionumber, |
2555 |
item_id => $item->itemnumber, |
2556 |
start_date => $start_1, |
2557 |
end_date => $end_1 |
2558 |
} |
2559 |
} |
2560 |
); |
2561 |
|
2562 |
$can_book = $item->check_booking( |
2563 |
{ |
2564 |
start_date => dt_from_string(), |
2565 |
end_date => dt_from_string()->add( days => 7 ), |
2566 |
} |
2567 |
); |
2568 |
|
2569 |
is( |
2570 |
$can_book, |
2571 |
1, |
2572 |
"Koha::Item->check_booking returns true when we don't conflict with a past booking" |
2573 |
); |
2574 |
|
2575 |
# Current booking |
2576 |
my $booking2 = $builder->build_object( |
2577 |
{ |
2578 |
class => 'Koha::Bookings', |
2579 |
value => { |
2580 |
biblio_id => $biblio->biblionumber, |
2581 |
item_id => $item->itemnumber, |
2582 |
start_date => $start_2, |
2583 |
end_date => $end_2 |
2584 |
} |
2585 |
} |
2586 |
); |
2587 |
|
2588 |
$can_book = $item->check_booking( |
2589 |
{ |
2590 |
start_date => dt_from_string(), |
2591 |
end_date => dt_from_string()->add( days => 7 ), |
2592 |
} |
2593 |
); |
2594 |
is( |
2595 |
$can_book, |
2596 |
0, |
2597 |
"Koha::Item->check_booking returns false if the booking would conflict" |
2598 |
); |
2599 |
|
2600 |
$can_book = $item->check_booking( |
2601 |
{ |
2602 |
start_date => dt_from_string(), |
2603 |
end_date => dt_from_string()->add( days => 7 ), |
2604 |
booking_id => $booking2->booking_id |
2605 |
} |
2606 |
); |
2607 |
is( |
2608 |
$can_book, |
2609 |
1, |
2610 |
"Koha::Item->check_booking returns true if we pass the booking_id that would conflict" |
2611 |
); |
2612 |
|
2613 |
$booking2->delete(); |
2614 |
|
2615 |
# Future booking |
2616 |
my $booking3 = $builder->build_object( |
2617 |
{ |
2618 |
class => 'Koha::Bookings', |
2619 |
value => { |
2620 |
biblio_id => $biblio->biblionumber, |
2621 |
item_id => $item->itemnumber, |
2622 |
start_date => $start_3, |
2623 |
end_date => $end_3 |
2624 |
} |
2625 |
} |
2626 |
); |
2627 |
|
2628 |
$can_book = $item->check_booking( |
2629 |
{ |
2630 |
start_date => dt_from_string(), |
2631 |
end_date => dt_from_string()->add( days => 7 ), |
2632 |
} |
2633 |
); |
2634 |
|
2635 |
is( |
2636 |
$can_book, |
2637 |
1, |
2638 |
"Koha::Item->check_booking returns true when we don't conflict with a future booking" |
2639 |
); |
2640 |
|
2641 |
$schema->storage->txn_rollback; |
2642 |
}; |