| Lines 26-32
          use Test::MockModule;
      
      
        Link Here | 
        
          | 26 | use Time::Fake; | 26 | use Time::Fake; | 
        
          | 27 | use DateTime; | 27 | use DateTime; | 
        
          | 28 | use JSON; | 28 | use JSON; | 
            
              | 29 | use Data::Dumper; |  |  | 
        
          | 30 | use utf8; | 29 | use utf8; | 
        
          | 31 |  | 30 |  | 
        
          | 32 | use C4::Circulation qw( AddIssue AddReturn ); | 31 | use C4::Circulation qw( AddIssue AddReturn ); | 
  
    | Lines 1688-1694
          subtest 'Test Koha::Patrons::merge' => sub {
      
      
        Link Here | 
        
          | 1688 |     is( Koha::Patrons->search( { borrowernumber => $keeper->id } )->count, 1, "Patron from attempted merge with AnonymousPatron still exists" ); | 1687 |     is( Koha::Patrons->search( { borrowernumber => $keeper->id } )->count, 1, "Patron from attempted merge with AnonymousPatron still exists" ); | 
        
          | 1689 |  | 1688 |  | 
        
          | 1690 |     subtest 'extended attributes' => sub { | 1689 |     subtest 'extended attributes' => sub { | 
          
            
              | 1691 |         plan tests => 5; | 1690 |         plan tests => 8; | 
        
          | 1692 |  | 1691 |  | 
        
          | 1693 |         my $keep_patron = | 1692 |         my $keep_patron = | 
        
          | 1694 |           $builder->build_object( { class => 'Koha::Patrons' } ); | 1693 |           $builder->build_object( { class => 'Koha::Patrons' } ); | 
  
    | Lines 1775-1781
          subtest 'Test Koha::Patrons::merge' => sub {
      
      
        Link Here | 
        
          | 1775 |         $keep_patron->delete; | 1774 |         $keep_patron->delete; | 
        
          | 1776 |         $merge_patron->delete; | 1775 |         $merge_patron->delete; | 
        
          | 1777 |  | 1776 |  | 
          
            
              | 1778 |         # Recreate but expect an exception because 2 "normal" attributes will be in the resulting patron | 1777 |         # Recreate but don't expect an exception if 2 non-repeatable attributes exist, pick the one from the patron we keep | 
        
          | 1779 |         $keep_patron = | 1778 |         $keep_patron = | 
        
          | 1780 |           $builder->build_object( { class => 'Koha::Patrons' } ); | 1779 |           $builder->build_object( { class => 'Koha::Patrons' } ); | 
        
          | 1781 |         $merge_patron = | 1780 |         $merge_patron = | 
  
    | Lines 1792-1802
          subtest 'Test Koha::Patrons::merge' => sub {
      
      
        Link Here | 
        
          | 1792 |             ] | 1791 |             ] | 
        
          | 1793 |         ); | 1792 |         ); | 
        
          | 1794 |  | 1793 |  | 
          
            
              | 1795 |         throws_ok { | 1794 |         $keep_patron->merge_with( [ $merge_patron->borrowernumber ] ); | 
            
              | 1796 |             $keep_patron->merge_with( [ $merge_patron->borrowernumber ] ); | 1795 |         $merged_attributes = $keep_patron->extended_attributes; | 
            
              | 1797 |         } | 1796 |         is( $merged_attributes->count, 4 ); | 
            
              | 1798 |         'Koha::Exceptions::Patron::Attribute::NonRepeatable', | 1797 |         compare_attributes( | 
            
              | 1799 |             'Exception thrown trying to merge several non-repeatable attributes'; | 1798 |             $merged_attributes, | 
            
              |  |  | 1799 |             ['from attr 1'], | 
            
              | 1800 |             $attribute_type_normal_1->code | 
            
              | 1801 |         ); | 
            
              | 1802 |         compare_attributes( | 
            
              | 1803 |             $merged_attributes, | 
            
              | 1804 |             ['to attr 2'], | 
            
              | 1805 |             $attribute_type_normal_2->code | 
            
              | 1806 |         ); | 
            
              | 1807 |         compare_attributes( | 
            
              | 1808 |             $merged_attributes, | 
            
              | 1809 |             [ 'from attr repeatable', 'to attr repeatable' ], | 
            
              | 1810 |             $attribute_type_repeatable->code | 
            
              | 1811 |         ); | 
            
              | 1812 |  | 
        
          | 1800 |     }; | 1813 |     }; | 
        
          | 1801 |  | 1814 |  | 
        
          | 1802 |     t::lib::Mocks::mock_preference( 'AnonymousPatron', '' ); | 1815 |     t::lib::Mocks::mock_preference( 'AnonymousPatron', '' ); | 
            
              | 1803 | -  |  |  |