| Lines 42-47
          $dbh->do(q|DELETE FROM borrowers|);
      
      
        Link Here | 
        
          | 42 | #$dbh->do(q|DELETE FROM branches|); | 42 | #$dbh->do(q|DELETE FROM branches|); | 
        
          | 43 | $dbh->do(q|DELETE FROM categories|); | 43 | $dbh->do(q|DELETE FROM categories|); | 
        
          | 44 | $dbh->do(q|DELETE FROM accountlines|); | 44 | $dbh->do(q|DELETE FROM accountlines|); | 
            
              |  |  | 45 | $dbh->do(q|DELETE FROM itemtypes WHERE parent_type IS NOT NULL|); | 
        
          | 45 | $dbh->do(q|DELETE FROM itemtypes|); | 46 | $dbh->do(q|DELETE FROM itemtypes|); | 
        
          | 46 | Koha::CirculationRules->search()->delete(); | 47 | Koha::CirculationRules->search()->delete(); | 
        
          | 47 |  | 48 |  | 
  
    | Lines 812-818
          subtest 'empty string means unlimited' => sub {
      
      
        Link Here | 
        
          | 812 | }; | 813 | }; | 
        
          | 813 |  | 814 |  | 
        
          | 814 | subtest 'itemtype group tests' => sub { | 815 | subtest 'itemtype group tests' => sub { | 
          
            
              | 815 |     plan tests => 17; | 816 |     plan tests => 20; | 
        
          | 816 |  | 817 |  | 
        
          | 817 |     t::lib::Mocks::mock_preference( 'CircControl', 'ItemHomeLibrary' ); | 818 |     t::lib::Mocks::mock_preference( 'CircControl', 'ItemHomeLibrary' ); | 
        
          | 818 |     Koha::CirculationRules->set_rules( | 819 |     Koha::CirculationRules->set_rules( | 
  
    | Lines 821-827
          subtest 'itemtype group tests' => sub {
      
      
        Link Here | 
        
          | 821 |             categorycode => '*', | 822 |             categorycode => '*', | 
        
          | 822 |             itemtype     => '*', | 823 |             itemtype     => '*', | 
        
          | 823 |             rules        => { | 824 |             rules        => { | 
          
            
              | 824 |                 maxissueqty       => '', | 825 |                 maxissueqty       => '5', | 
        
          | 825 |                 maxonsiteissueqty => '', | 826 |                 maxonsiteissueqty => '', | 
        
          | 826 |                 issuelength       => 1, | 827 |                 issuelength       => 1, | 
        
          | 827 |                 firstremind       => 1,      # 1 day of grace | 828 |                 firstremind       => 1,      # 1 day of grace | 
  
    | Lines 886-895
          subtest 'itemtype group tests' => sub {
      
      
        Link Here | 
        
          | 886 |             itype         => $child_itype_1->{itemtype} | 887 |             itype         => $child_itype_1->{itemtype} | 
        
          | 887 |         } | 888 |         } | 
        
          | 888 |     ); | 889 |     ); | 
            
              |  |  | 890 |     my $checkout_item = $builder->build_sample_item( | 
            
              | 891 |         { | 
            
              | 892 |             homebranch    => $branch->{branchcode}, | 
            
              | 893 |             holdingbranch => $branch->{branchcode}, | 
            
              | 894 |             itype         => $parent_itype->{itemtype} | 
            
              | 895 |         } | 
            
              | 896 |     ); | 
        
          | 889 |  | 897 |  | 
          
            
              | 890 |     my $all_iq_rule = $builder->build( | 898 |     my $all_iq_rule = $builder->build_object( | 
        
          | 891 |         { | 899 |         { | 
          
            
              | 892 |             source => 'CirculationRule', | 900 |             class => 'Koha::CirculationRules', | 
        
          | 893 |             value  => { | 901 |             value  => { | 
        
          | 894 |                 branchcode   => $branch->{branchcode}, | 902 |                 branchcode   => $branch->{branchcode}, | 
        
          | 895 |                 categorycode => $category->{categorycode}, | 903 |                 categorycode => $category->{categorycode}, | 
  
    | Lines 903-918
          subtest 'itemtype group tests' => sub {
      
      
        Link Here | 
        
          | 903 |         undef, 'Checkout allowed, using all rule of 1' ); | 911 |         undef, 'Checkout allowed, using all rule of 1' ); | 
        
          | 904 |  | 912 |  | 
        
          | 905 |     #Checkout an item | 913 |     #Checkout an item | 
          
            
              | 906 |     my $issue = | 914 |     my $issue = C4::Circulation::AddIssue( $patron, $checkout_item->barcode, dt_from_string() ); | 
            
              | 907 |       C4::Circulation::AddIssue( $patron, $item->barcode, dt_from_string() ); |  |  | 
        
          | 908 |     like( $issue->issue_id, qr|^\d+$|, 'The issue should have been inserted' ); | 915 |     like( $issue->issue_id, qr|^\d+$|, 'The issue should have been inserted' ); | 
        
          | 909 |  | 916 |  | 
          
            
              | 910 |     #Patron has 1 checkout of child itype1 | 917 |     #Patron has 1 checkout of parent itemtype {{{{ child itype1 | 
        
          | 911 |  | 918 |  | 
          
            
              | 912 |     my $parent_iq_rule = $builder->build( | 919 |     my $parent_iq_rule = $builder->build_object( | 
        
          | 913 |         { | 920 |         { | 
          
            
              | 914 |             source => 'CirculationRule', | 921 |             class => 'Koha::CirculationRules', | 
            
              | 915 |             value  => { | 922 |             value => { | 
        
          | 916 |                 branchcode   => $branch->{branchcode}, | 923 |                 branchcode   => $branch->{branchcode}, | 
        
          | 917 |                 categorycode => $category->{categorycode}, | 924 |                 categorycode => $category->{categorycode}, | 
        
          | 918 |                 itemtype     => $parent_itype->{itemtype}, | 925 |                 itemtype     => $parent_itype->{itemtype}, | 
  
    | Lines 922-929
          subtest 'itemtype group tests' => sub {
      
      
        Link Here | 
        
          | 922 |         } | 929 |         } | 
        
          | 923 |     ); | 930 |     ); | 
        
          | 924 |  | 931 |  | 
          
            
              | 925 |     is( C4::Circulation::TooMany( $patron, $item ), | 932 |     is( | 
            
              | 926 |         undef, 'Checkout allowed, using parent type rule of 2' ); | 933 |         C4::Circulation::TooMany( $patron, $item ), | 
            
              |  |  | 934 |         undef, 'Checkout allowed, using parent type rule of 2' | 
            
              | 935 |     ); | 
            
              | 936 |  | 
            
              | 937 |     $all_iq_rule->rule_value(5)->store; | 
            
              | 938 |     $parent_iq_rule->rule_value(1)->store; | 
            
              | 939 |  | 
            
              | 940 |     my $data = C4::Circulation::TooMany( $patron, $item ); | 
            
              | 941 |     my $rule = delete $data->{circulation_rule}; | 
            
              | 942 |     is( ref $rule, 'Koha::CirculationRule', 'Circulation rule was returned' ); | 
            
              | 943 |     is_deeply( | 
            
              | 944 |         $data, | 
            
              | 945 |         { | 
            
              | 946 |             reason      => 'TOO_MANY_CHECKOUTS', | 
            
              | 947 |             count       => 1, | 
            
              | 948 |             max_allowed => 1, | 
            
              | 949 |         }, | 
            
              | 950 |         'Checkout not allowed, using parent type rule of 1' | 
            
              | 951 |     ); | 
            
              | 952 |  | 
            
              | 953 |     $parent_iq_rule->rule_value(2)->store; | 
            
              | 954 |  | 
            
              | 955 |     is( | 
            
              | 956 |         C4::Circulation::TooMany( $patron, $item ), | 
            
              | 957 |         undef, 'Checkout allowed, using specific type of 1 and only parent type checked out' | 
            
              | 958 |     ); | 
            
              | 959 |  | 
            
              | 960 |     $checkout_item->itype( $child_itype_1->{itemtype} )->store; | 
        
          | 927 |  | 961 |  | 
        
          | 928 |     my $child1_iq_rule = $builder->build_object( | 962 |     my $child1_iq_rule = $builder->build_object( | 
        
          | 929 |         { | 963 |         { | 
  
    | Lines 938-945
          subtest 'itemtype group tests' => sub {
      
      
        Link Here | 
        
          | 938 |         } | 972 |         } | 
        
          | 939 |     ); | 973 |     ); | 
        
          | 940 |  | 974 |  | 
          
            
              | 941 |     my $data = C4::Circulation::TooMany( $patron, $item ); | 975 |     $data = C4::Circulation::TooMany( $patron, $item ); | 
            
              | 942 |     my $rule = delete $data->{circulation_rule}; | 976 |     $rule = delete $data->{circulation_rule}; | 
        
          | 943 |     is( ref $rule, 'Koha::CirculationRule', 'Circulation rule was returned' ); | 977 |     is( ref $rule, 'Koha::CirculationRule', 'Circulation rule was returned' ); | 
        
          | 944 |     is_deeply( | 978 |     is_deeply( | 
        
          | 945 |         $data, | 979 |         $data, | 
  
    | Lines 1017-1025
          subtest 'itemtype group tests' => sub {
      
      
        Link Here | 
        
          | 1017 |     ); | 1051 |     ); | 
        
          | 1018 |  | 1052 |  | 
        
          | 1019 |     #increase parent type to greater than specific | 1053 |     #increase parent type to greater than specific | 
          
            
              | 1020 |     my $circ_rule_object = | 1054 | #    my $circ_rule_object = | 
            
              | 1021 |       Koha::CirculationRules->find( $parent_iq_rule->{id} ); | 1055 | #      Koha::CirculationRules->find( $parent_iq_rule->{id} ); | 
            
              | 1022 |     $circ_rule_object->rule_value(4)->store(); | 1056 | #    $circ_rule_object->rule_value(4)->store(); | 
            
              |  |  | 1057 |     $parent_iq_rule->rule_value(4)->store(); | 
            
              | 1058 |  | 
        
          | 1023 |  | 1059 |  | 
        
          | 1024 |     is( C4::Circulation::TooMany( $patron, $item_1 ), | 1060 |     is( C4::Circulation::TooMany( $patron, $item_1 ), | 
        
          | 1025 |         undef, 'Checkout allowed, using specific type rule of 3' ); | 1061 |         undef, 'Checkout allowed, using specific type rule of 3' ); | 
            
              | 1026 | -  |  |  |