| Lines 19-25
          
      
      
        Link Here | 
        
          | 19 |  | 19 |  | 
        
          | 20 | use Modern::Perl; | 20 | use Modern::Perl; | 
        
          | 21 |  | 21 |  | 
          
            
              | 22 | use Test::More tests => 25; | 22 | use Test::More tests => 26; | 
        
          | 23 |  | 23 |  | 
        
          | 24 | use Test::MockModule; | 24 | use Test::MockModule; | 
        
          | 25 | use Test::Exception; | 25 | use Test::Exception; | 
  
    | Lines 2608-2610
          subtest 'filter_by_has_recalls' => sub {
      
      
        Link Here | 
        
          | 2608 |     $schema->storage->txn_rollback; | 2608 |     $schema->storage->txn_rollback; | 
        
          | 2609 |  | 2609 |  | 
        
          | 2610 | }; | 2610 | }; | 
          
            
              | 2611 | -  | 2611 |  | 
            
              |  |  | 2612 | subtest 'filter_by_available' => sub { | 
            
              | 2613 |     plan tests => 6; | 
            
              | 2614 |  | 
            
              | 2615 |     $schema->storage->txn_begin; | 
            
              | 2616 |  | 
            
              | 2617 |     my $library = $builder->build_object( { class => 'Koha::Libraries' } ); | 
            
              | 2618 |     my $biblio  = $builder->build_sample_biblio(); | 
            
              | 2619 |     my $patron  = $builder->build_object( { class => 'Koha::Patrons' } ); | 
            
              | 2620 |     t::lib::Mocks::mock_userenv( { branchcode => $patron->branchcode } ); | 
            
              | 2621 |  | 
            
              | 2622 |     my $item_1 = $builder->build_sample_item( | 
            
              | 2623 |         { | 
            
              | 2624 |             biblionumber => $biblio->biblionumber, | 
            
              | 2625 |             library      => $library->branchcode, | 
            
              | 2626 |             itemlost     => 0, | 
            
              | 2627 |             withdrawn    => 0, | 
            
              | 2628 |             damaged      => 0, | 
            
              | 2629 |             notforloan   => 0, | 
            
              | 2630 |             onloan       => undef, | 
            
              | 2631 |         } | 
            
              | 2632 |     ); | 
            
              | 2633 |  | 
            
              | 2634 |     my $item_2 = $builder->build_sample_item( | 
            
              | 2635 |         { | 
            
              | 2636 |             biblionumber => $biblio->biblionumber, | 
            
              | 2637 |             library      => $library->branchcode, | 
            
              | 2638 |             itemlost     => 0, | 
            
              | 2639 |             withdrawn    => 0, | 
            
              | 2640 |             damaged      => 0, | 
            
              | 2641 |             notforloan   => 0, | 
            
              | 2642 |             onloan       => undef, | 
            
              | 2643 |         } | 
            
              | 2644 |     ); | 
            
              | 2645 |  | 
            
              | 2646 |     my $item_3 = $builder->build_sample_item( | 
            
              | 2647 |         { | 
            
              | 2648 |             biblionumber => $biblio->biblionumber, | 
            
              | 2649 |             library      => $library->branchcode, | 
            
              | 2650 |             itemlost     => 0, | 
            
              | 2651 |             withdrawn    => 0, | 
            
              | 2652 |             damaged      => 0, | 
            
              | 2653 |             notforloan   => 0, | 
            
              | 2654 |             onloan       => undef, | 
            
              | 2655 |         } | 
            
              | 2656 |     ); | 
            
              | 2657 |  | 
            
              | 2658 |     my $item_4 = $builder->build_sample_item( | 
            
              | 2659 |         { | 
            
              | 2660 |             biblionumber => $biblio->biblionumber, | 
            
              | 2661 |             library      => $library->branchcode, | 
            
              | 2662 |             itemlost     => 0, | 
            
              | 2663 |             withdrawn    => 0, | 
            
              | 2664 |             damaged      => 0, | 
            
              | 2665 |             notforloan   => 0, | 
            
              | 2666 |             onloan       => undef, | 
            
              | 2667 |         } | 
            
              | 2668 |     ); | 
            
              | 2669 |  | 
            
              | 2670 |     my $item_5 = $builder->build_sample_item( | 
            
              | 2671 |         { | 
            
              | 2672 |             biblionumber => $biblio->biblionumber, | 
            
              | 2673 |             library      => $library->branchcode, | 
            
              | 2674 |             itemlost     => 0, | 
            
              | 2675 |             withdrawn    => 0, | 
            
              | 2676 |             damaged      => 0, | 
            
              | 2677 |             notforloan   => 0, | 
            
              | 2678 |             onloan       => undef, | 
            
              | 2679 |         } | 
            
              | 2680 |     ); | 
            
              | 2681 |  | 
            
              | 2682 |     # Create items with varying states | 
            
              | 2683 |     # Test: Initial available items | 
            
              | 2684 |     is( | 
            
              | 2685 |         $biblio->items->filter_by_available->count, | 
            
              | 2686 |         5, | 
            
              | 2687 |         "Filtered to 4 available items" | 
            
              | 2688 |     ); | 
            
              | 2689 |  | 
            
              | 2690 |     # Mark item_1 as lost | 
            
              | 2691 |     $item_1->itemlost(3)->store; | 
            
              | 2692 |     C4::Circulation::LostItem( $item_1->itemnumber, 1 ); | 
            
              | 2693 |  | 
            
              | 2694 |     is( | 
            
              | 2695 |         $biblio->items->filter_by_available->count, | 
            
              | 2696 |         4, | 
            
              | 2697 |         "Filtered to 4 available items, 1 is lost" | 
            
              | 2698 |     ); | 
            
              | 2699 |  | 
            
              | 2700 |     #Mark item_2 as damaged | 
            
              | 2701 |     $item_2->damaged(1)->store; | 
            
              | 2702 |  | 
            
              | 2703 |     is( | 
            
              | 2704 |         $biblio->items->filter_by_available->count, | 
            
              | 2705 |         3, | 
            
              | 2706 |         "Filtered to 3 available items, 1 is lost, 1 is damaged" | 
            
              | 2707 |     ); | 
            
              | 2708 |  | 
            
              | 2709 |     #Mark item_3 as withdrawn | 
            
              | 2710 |     $item_3->withdrawn(1)->store; | 
            
              | 2711 |  | 
            
              | 2712 |     is( | 
            
              | 2713 |         $biblio->items->filter_by_available->count, | 
            
              | 2714 |         2, | 
            
              | 2715 |         "Filtered to 2 available items, 1 is lost, 1 is damaged, 1 is withdrawn" | 
            
              | 2716 |     ); | 
            
              | 2717 |  | 
            
              | 2718 |     #Checkout item_4 | 
            
              | 2719 |     C4::Circulation::AddIssue( $patron, $item_4->barcode ); | 
            
              | 2720 |     is( | 
            
              | 2721 |         $biblio->items->filter_by_available->count, | 
            
              | 2722 |         1, | 
            
              | 2723 |         "Filtered to 1 available items, 1 is lost, 1 is damaged, 1 is withdrawn, 1 is checked out" | 
            
              | 2724 |     ); | 
            
              | 2725 |  | 
            
              | 2726 |     #Mark item_5 as notforloan | 
            
              | 2727 |     $item_5->notforloan(1)->store; | 
            
              | 2728 |     is( | 
            
              | 2729 |         $biblio->items->filter_by_available->count, | 
            
              | 2730 |         0, | 
            
              | 2731 |         "Filtered to 0 available items, 1 is lost, 1 is damaged, 1 is withdrawn, 1 is checked out, 1 is notforloan" | 
            
              | 2732 |     ); | 
            
              | 2733 |  | 
            
              | 2734 |     $schema->storage->txn_rollback; | 
            
              | 2735 | }; |