| Lines 18-24
          
      
      
        Link Here | 
        
          | 18 | use Modern::Perl; | 18 | use Modern::Perl; | 
        
          | 19 | use utf8; | 19 | use utf8; | 
        
          | 20 |  | 20 |  | 
          
            
              | 21 | use Test::More tests => 45; | 21 | use Test::More tests => 46; | 
        
          | 22 | use Test::MockModule; | 22 | use Test::MockModule; | 
        
          | 23 |  | 23 |  | 
        
          | 24 | use Data::Dumper; | 24 | use Data::Dumper; | 
  
    | Lines 34-39
          use C4::Circulation;
      
      
        Link Here | 
        
          | 34 | use C4::Biblio; | 34 | use C4::Biblio; | 
        
          | 35 | use C4::Items; | 35 | use C4::Items; | 
        
          | 36 | use C4::Log; | 36 | use C4::Log; | 
            
              |  |  | 37 | use C4::Message; | 
        
          | 37 | use C4::Reserves; | 38 | use C4::Reserves; | 
        
          | 38 | use C4::Overdues qw(UpdateFine CalcFine); | 39 | use C4::Overdues qw(UpdateFine CalcFine); | 
        
          | 39 | use Koha::DateUtils; | 40 | use Koha::DateUtils; | 
  
    | Lines 43-48
          use Koha::Items;
      
      
        Link Here | 
        
          | 43 | use Koha::Checkouts; | 44 | use Koha::Checkouts; | 
        
          | 44 | use Koha::Patrons; | 45 | use Koha::Patrons; | 
        
          | 45 | use Koha::CirculationRules; | 46 | use Koha::CirculationRules; | 
            
              |  |  | 47 | use Koha::Patron::Message::Attributes; | 
            
              | 48 | use Koha::Patron::Message::Preferences; | 
        
          | 46 | use Koha::Subscriptions; | 49 | use Koha::Subscriptions; | 
        
          | 47 | use Koha::Account::Lines; | 50 | use Koha::Account::Lines; | 
        
          | 48 | use Koha::Account::Offsets; | 51 | use Koha::Account::Offsets; | 
  
    | Lines 2829-2834
          subtest 'ItemsDeniedRenewal preference' => sub {
      
      
        Link Here | 
        
          | 2829 |     is( $idr_mayrenew, 0, 'Renewal blocked for empty string when "" in pref' ); | 2832 |     is( $idr_mayrenew, 0, 'Renewal blocked for empty string when "" in pref' ); | 
        
          | 2830 | }; | 2833 | }; | 
        
          | 2831 |  | 2834 |  | 
            
              |  |  | 2835 | subtest 'SendCirculationAlert test' => sub { | 
            
              | 2836 |     plan tests => 4; | 
            
              | 2837 |  | 
            
              | 2838 |     my $library = $builder->build( { source => 'Branch' } ); | 
            
              | 2839 |     my $patron  = $builder->build( { source => 'Borrower' } ); | 
            
              | 2840 |     my $attribute = Koha::Patron::Message::Attributes->find({ | 
            
              | 2841 |         message_name => 'Item_Checkout', | 
            
              | 2842 |     }); | 
            
              | 2843 |     Koha::Patron::Message::Preference->new({ | 
            
              | 2844 |         borrowernumber => $patron->{'borrowernumber'}, | 
            
              | 2845 |         message_attribute_id => $attribute->message_attribute_id, | 
            
              | 2846 |         days_in_advance => undef, | 
            
              | 2847 |         wants_digest => 0, | 
            
              | 2848 |         message_transport_types => ['email'], | 
            
              | 2849 |     })->store; | 
            
              | 2850 |     my $biblioitem_1 = $builder->build( { source => 'Biblioitem' } ); | 
            
              | 2851 |     my $item_1 = $builder->build( | 
            
              | 2852 |         {   source => 'Item', | 
            
              | 2853 |             value  => { | 
            
              | 2854 |                 homebranch    => $library->{branchcode}, | 
            
              | 2855 |                 holdingbranch => $library->{branchcode}, | 
            
              | 2856 |                 notforloan    => 0, | 
            
              | 2857 |                 itemlost      => 0, | 
            
              | 2858 |                 withdrawn     => 0, | 
            
              | 2859 |                 biblionumber  => $biblioitem_1->{biblionumber} | 
            
              | 2860 |             } | 
            
              | 2861 |         } | 
            
              | 2862 |     ); | 
            
              | 2863 |  | 
            
              | 2864 |     my $old_message = C4::Message->find_last_message($patron, 'CHECKOUT', 'email'); | 
            
              | 2865 |     $old_message->{'message_id'} = 0 unless $old_message; | 
            
              | 2866 |     is(C4::Circulation::SendCirculationAlert({ | 
            
              | 2867 |         type     => 'CHECKOUT', | 
            
              | 2868 |         item     => $item_1, | 
            
              | 2869 |         borrower => $patron, | 
            
              | 2870 |         branch   => $library->{'branchcode'}, | 
            
              | 2871 |     }), undef, "SendCirculationAlert called."); | 
            
              | 2872 |     my $new_message = C4::Message->find_last_message($patron, 'CHECKOUT', 'email'); | 
            
              | 2873 |     ok($old_message->{'message_id'} != $new_message->{'message_id'}, "New message has appeared."); | 
            
              | 2874 |     is($new_message->{'letter_code'}, 'CHECKOUT', "New message letter code is CHECKOUT."); | 
            
              | 2875 |     is($new_message->{'borrowernumber'}, $patron->{'borrowernumber'}, "New message is to our test patron."); | 
            
              | 2876 | }; | 
            
              | 2877 |  | 
        
          | 2832 | subtest 'CanBookBeIssued | item-level_itypes=biblio' => sub { | 2878 | subtest 'CanBookBeIssued | item-level_itypes=biblio' => sub { | 
        
          | 2833 |     plan tests => 2; | 2879 |     plan tests => 2; | 
        
          | 2834 |  | 2880 |  |