|
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 => 32; |
23 |
use Test::More tests => 33; |
| 24 |
use Test::Exception; |
24 |
use Test::Exception; |
| 25 |
use Test::MockModule; |
25 |
use Test::MockModule; |
| 26 |
|
26 |
|
|
Lines 2408-2410
subtest 'bookings' => sub {
Link Here
|
| 2408 |
|
2408 |
|
| 2409 |
$schema->storage->txn_rollback; |
2409 |
$schema->storage->txn_rollback; |
| 2410 |
}; |
2410 |
}; |
| 2411 |
- |
2411 |
|
|
|
2412 |
subtest 'find_booking' => sub { |
| 2413 |
plan tests => 6; |
| 2414 |
|
| 2415 |
$schema->storage->txn_begin; |
| 2416 |
|
| 2417 |
my $biblio = $builder->build_sample_biblio(); |
| 2418 |
my $item = $builder->build_sample_item( { biblionumber => $biblio->biblionumber, bookable => 1 } ); |
| 2419 |
my $found_booking = $item->find_booking( |
| 2420 |
{ |
| 2421 |
checkout_date => dt_from_string(), |
| 2422 |
due_date => dt_from_string()->add( days => 7 ), |
| 2423 |
} |
| 2424 |
); |
| 2425 |
|
| 2426 |
is( |
| 2427 |
$found_booking, undef, |
| 2428 |
"Nothing returned from Koha::Item->find_booking if there are no bookings" |
| 2429 |
); |
| 2430 |
|
| 2431 |
my $start_1 = dt_from_string()->subtract( days => 7 ); |
| 2432 |
my $end_1 = dt_from_string()->subtract( days => 1 ); |
| 2433 |
my $start_2 = dt_from_string(); |
| 2434 |
my $end_2 = dt_from_string()->add( days => 7 ); |
| 2435 |
my $start_3 = dt_from_string()->add( days => 8 ); |
| 2436 |
my $end_3 = dt_from_string()->add( days => 16 ); |
| 2437 |
|
| 2438 |
# Past booking |
| 2439 |
my $booking1 = $builder->build_object( |
| 2440 |
{ |
| 2441 |
class => 'Koha::Bookings', |
| 2442 |
value => { |
| 2443 |
biblio_id => $biblio->biblionumber, |
| 2444 |
item_id => $item->itemnumber, |
| 2445 |
start_date => $start_1, |
| 2446 |
end_date => $end_1 |
| 2447 |
} |
| 2448 |
} |
| 2449 |
); |
| 2450 |
|
| 2451 |
$found_booking = $item->find_booking( |
| 2452 |
{ |
| 2453 |
checkout_date => dt_from_string(), |
| 2454 |
due_date => dt_from_string()->add( days => 7 ), |
| 2455 |
} |
| 2456 |
); |
| 2457 |
|
| 2458 |
is( |
| 2459 |
$found_booking, |
| 2460 |
undef, |
| 2461 |
"Koha::Item->find_booking returns undefined if the passed dates do not conflict with any item bookings" |
| 2462 |
); |
| 2463 |
|
| 2464 |
# Current booking |
| 2465 |
my $booking2 = $builder->build_object( |
| 2466 |
{ |
| 2467 |
class => 'Koha::Bookings', |
| 2468 |
value => { |
| 2469 |
biblio_id => $biblio->biblionumber, |
| 2470 |
item_id => $item->itemnumber, |
| 2471 |
start_date => $start_2, |
| 2472 |
end_date => $end_2 |
| 2473 |
} |
| 2474 |
} |
| 2475 |
); |
| 2476 |
|
| 2477 |
$found_booking = $item->find_booking( |
| 2478 |
{ |
| 2479 |
checkout_date => dt_from_string(), |
| 2480 |
due_date => dt_from_string()->add( days => 7 ), |
| 2481 |
} |
| 2482 |
); |
| 2483 |
is( |
| 2484 |
ref($found_booking), |
| 2485 |
'Koha::Booking', |
| 2486 |
"Koha::Item->find_booking returns a Koha::Booking if one exists that would clash with the passed dates" |
| 2487 |
); |
| 2488 |
is( $found_booking->booking_id, $booking2->booking_id, "Koha::Item->find_booking returns the current booking" ); |
| 2489 |
|
| 2490 |
# Future booking |
| 2491 |
my $booking3 = $builder->build_object( |
| 2492 |
{ |
| 2493 |
class => 'Koha::Bookings', |
| 2494 |
value => { |
| 2495 |
biblio_id => $biblio->biblionumber, |
| 2496 |
item_id => $item->itemnumber, |
| 2497 |
start_date => $start_3, |
| 2498 |
end_date => $end_3 |
| 2499 |
} |
| 2500 |
} |
| 2501 |
); |
| 2502 |
|
| 2503 |
$found_booking = $item->find_booking( |
| 2504 |
{ |
| 2505 |
checkout_date => dt_from_string(), |
| 2506 |
due_date => dt_from_string()->add( days => 7 ), |
| 2507 |
} |
| 2508 |
); |
| 2509 |
|
| 2510 |
is( |
| 2511 |
ref($found_booking), |
| 2512 |
'Koha::Booking', |
| 2513 |
"Koha::Item->find_booking returns a Koha::Booking if one exists that would clash with the passed dates" |
| 2514 |
); |
| 2515 |
is( |
| 2516 |
$found_booking->booking_id, $booking2->booking_id, |
| 2517 |
"Koha::Item->find_booking returns the current booking not a future one" |
| 2518 |
); |
| 2519 |
|
| 2520 |
$schema->storage->txn_rollback; |
| 2521 |
}; |