| 
      
            Lines 37-43
          my $builder = t::lib::TestBuilder->new;
      
      
        Link Here
      
     | 
  
        
          | 37 | 
           | 
          37 | 
           | 
        
        
          | 38 | 
          subtest 'store() tests' => sub { | 
          38 | 
          subtest 'store() tests' => sub { | 
        
        
          | 39 | 
           | 
          39 | 
           | 
        
          
            
              | 40 | 
                  plan tests => 6;  | 
              40 | 
                  plan tests => 7;  | 
            
        
          | 41 | 
           | 
          41 | 
           | 
        
        
          | 42 | 
              subtest 'Update an attribute should update the patron "updated_on" field' => sub { | 
          42 | 
              subtest 'Update an attribute should update the patron "updated_on" field' => sub { | 
        
        
          | 43 | 
           | 
          43 | 
           | 
        
  
    | 
      
            Lines 282-287
          subtest 'store() tests' => sub {
      
      
        Link Here
      
     | 
  
        
          | 282 | 
                  $schema->storage->txn_rollback;  | 
          282 | 
                  $schema->storage->txn_rollback;  | 
        
        
          | 283 | 
              };  | 
          283 | 
              };  | 
        
        
          | 284 | 
           | 
          284 | 
           | 
        
            
               | 
               | 
              285 | 
              subtest 'trim identifier tests (Bug 32767)' => sub { | 
            
            
              | 286 | 
               | 
            
            
              | 287 | 
                      plan tests => 5;  | 
            
            
              | 288 | 
               | 
            
            
              | 289 | 
                      $schema->storage->txn_begin;  | 
            
            
              | 290 | 
               | 
            
            
              | 291 | 
                      my $patron_1 = $builder->build( { source => 'Borrower' } )->{borrowernumber}; | 
            
            
              | 292 | 
                      my $patron_2 = $builder->build( { source => 'Borrower' } )->{borrowernumber}; | 
            
            
              | 293 | 
               | 
            
            
              | 294 | 
                      my $attribute_type_1 = $builder->build(  | 
            
            
              | 295 | 
                          {   source => 'BorrowerAttributeType', | 
            
            
              | 296 | 
                              value  => { unique_id => 1, trim_value => 0 } | 
            
            
              | 297 | 
                          }  | 
            
            
              | 298 | 
                      );  | 
            
            
              | 299 | 
                      Koha::Patron::Attribute->new(  | 
            
            
              | 300 | 
                          {   borrowernumber => $patron_1, | 
            
            
              | 301 | 
                              code           => $attribute_type_1->{code}, | 
            
            
              | 302 | 
                              attribute      => '123'  | 
            
            
              | 303 | 
                          }  | 
            
            
              | 304 | 
                      )->store;  | 
            
            
              | 305 | 
                      Koha::Patron::Attribute->new(  | 
            
            
              | 306 | 
                          {   borrowernumber => $patron_2, | 
            
            
              | 307 | 
                              code           => $attribute_type_1->{code}, | 
            
            
              | 308 | 
                              attribute      => ' 123'  | 
            
            
              | 309 | 
                          }  | 
            
            
              | 310 | 
                      )->store;  | 
            
            
              | 311 | 
                      my $attr_count  | 
            
            
              | 312 | 
                          = Koha::Patron::Attributes->search(  | 
            
            
              | 313 | 
                          { code => $attribute_type_1->{code} } ) | 
            
            
              | 314 | 
                          ->count;  | 
            
            
              | 315 | 
                      is( $attr_count, 2,  | 
            
            
              | 316 | 
                          'Two identical attributes stored and retrieved correctly because one of them had whitespace at the start' );  | 
            
            
              | 317 | 
               | 
            
            
              | 318 | 
                      my $attribute_type_2 = $builder->build(  | 
            
            
              | 319 | 
                          {   source => 'BorrowerAttributeType', | 
            
            
              | 320 | 
                              value  => { unique_id => 1, trim_value => 1 } | 
            
            
              | 321 | 
                          }  | 
            
            
              | 322 | 
                      );  | 
            
            
              | 323 | 
               | 
            
            
              | 324 | 
                      Koha::Patron::Attribute->new(  | 
            
            
              | 325 | 
                          {   borrowernumber => $patron_1, | 
            
            
              | 326 | 
                              code           => $attribute_type_2->{code}, | 
            
            
              | 327 | 
                              attribute      => '123'  | 
            
            
              | 328 | 
                          }  | 
            
            
              | 329 | 
                      )->store;  | 
            
            
              | 330 | 
                      throws_ok { | 
            
            
              | 331 | 
                          Koha::Patron::Attribute->new(  | 
            
            
              | 332 | 
                              {   borrowernumber => $patron_2, | 
            
            
              | 333 | 
                                  code           => $attribute_type_2->{code}, | 
            
            
              | 334 | 
                                  attribute      => ' 123'  | 
            
            
              | 335 | 
                              }  | 
            
            
              | 336 | 
                          )->store;  | 
            
            
              | 337 | 
                      }  | 
            
            
              | 338 | 
                      'Koha::Exceptions::Patron::Attribute::UniqueIDConstraint',  | 
            
            
              | 339 | 
                          'Exception thrown trying to store more than one unique attribute now that we enabled trim_value';  | 
            
            
              | 340 | 
               | 
            
            
              | 341 | 
                      is(  | 
            
            
              | 342 | 
                          "$@",  | 
            
            
              | 343 | 
                          "Your action breaks a unique constraint on the attribute. type="  | 
            
            
              | 344 | 
                          . $attribute_type_2->{code} | 
            
            
              | 345 | 
                          . " value=123",  | 
            
            
              | 346 | 
                          'Exception stringified correctly, attribute passed correctly'  | 
            
            
              | 347 | 
                      );  | 
            
            
              | 348 | 
               | 
            
            
              | 349 | 
                      my $attributes = Koha::Patron::Attributes->search(  | 
            
            
              | 350 | 
                          { borrowernumber => $patron_1, code => $attribute_type_2->{code} } ); | 
            
            
              | 351 | 
                      is( $attributes->count, 1, '1 unique attribute stored' );  | 
            
            
              | 352 | 
                      is( $attributes->next->attribute,  | 
            
            
              | 353 | 
                          '123', 'our unique attribute remains unchanged' );  | 
            
            
              | 354 | 
               | 
            
            
              | 355 | 
                      $schema->storage->txn_rollback;  | 
            
            
              | 356 | 
                  };  | 
            
            
              | 357 | 
               | 
            
        
          | 285 | 
              subtest 'invalid type tests' => sub { | 
          358 | 
              subtest 'invalid type tests' => sub { | 
        
        
          | 286 | 
           | 
          359 | 
           | 
        
        
          | 287 | 
                  plan tests => 2;  | 
          360 | 
                  plan tests => 2;  | 
        
            
              | 288 | 
              -   | 
               | 
               |