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