| 
      
            Lines 151-157
          subtest 'get() test' => sub {
      
      
        Link Here
      
     | 
  
        
          | 151 | 
           | 
          151 | 
           | 
        
        
          | 152 | 
          subtest 'add() tests' => sub { | 
          152 | 
          subtest 'add() tests' => sub { | 
        
        
          | 153 | 
           | 
          153 | 
           | 
        
          
            
              | 154 | 
                  plan tests => 16;  | 
              154 | 
                  plan tests => 17;  | 
            
        
          | 155 | 
           | 
          155 | 
           | 
        
        
          | 156 | 
              $schema->storage->txn_begin;  | 
          156 | 
              $schema->storage->txn_begin;  | 
        
        
          | 157 | 
           | 
          157 | 
           | 
        
  
    | 
      
            Lines 220-231
          subtest 'add() tests' => sub {
      
      
        Link Here
      
     | 
  
        
          | 220 | 
                  ]  | 
          220 | 
                  ]  | 
        
        
          | 221 | 
              );  | 
          221 | 
              );  | 
        
        
          | 222 | 
           | 
          222 | 
           | 
        
            
               | 
               | 
              223 | 
                  subtest 'relationships contracts, interfaces, aliases' => sub { | 
            
            
              | 224 | 
                      plan tests => 32;  | 
            
            
              | 225 | 
                      my $vendor    = { name => 'another vendor', contacts => [], interfaces => [], aliases => [] }; | 
            
            
              | 226 | 
                      my $vendor_id = $t->post_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors" => json => $vendor )  | 
            
            
              | 227 | 
                          ->status_is( 201, 'REST3 .2.1' )->json_is( '/name' => $vendor->{name} ) | 
            
            
              | 228 | 
               | 
            
            
              | 229 | 
                          # FIXME Maybe we expect instead  | 
            
            
              | 230 | 
                          # ->json_is( '/contacts' => [] )->json_is('/interfaces' => [], '/aliases' => [] ); | 
            
            
              | 231 | 
                          ->json_hasnt('/contacts')->json_hasnt('/interfaces')->json_hasnt('/aliases')->tx->res->json->{id}; | 
            
            
              | 232 | 
                      $t->get_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors/" . $vendor_id )->status_is(200)  | 
            
            
              | 233 | 
                          ->json_hasnt('/contacts')->json_hasnt('/interfaces')->json_hasnt('/aliases'); | 
            
            
              | 234 | 
               | 
            
            
              | 235 | 
                      $t->get_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors/"  | 
            
            
              | 236 | 
                              . $vendor_id => { 'x-koha-embed' => 'contacts,interfaces,aliases' } )->status_is(200) | 
            
            
              | 237 | 
                          ->json_is( '/contacts', [] )->json_is( '/interfaces', [] )->json_is( '/aliases', [] );  | 
            
            
              | 238 | 
               | 
            
            
              | 239 | 
                      $vendor = { | 
            
            
              | 240 | 
                          name       => 'yet another vendor', contacts => [ { name => 'contact name' } ], | 
            
            
              | 241 | 
                          interfaces => [ { name => 'interface name' } ], aliases => [ { alias => 'foo' } ] | 
            
            
              | 242 | 
                      };  | 
            
            
              | 243 | 
                      $vendor_id = $t->post_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors" => json => $vendor )  | 
            
            
              | 244 | 
                          ->status_is( 201, 'REST3 .2.1' )->json_is( '/name' => $vendor->{name} ) | 
            
            
              | 245 | 
               | 
            
            
              | 246 | 
                          # FIXME Maybe we expect instead  | 
            
            
              | 247 | 
                          # ->json_is( '/contacts' => [] )->json_is('/interfaces' => [], '/aliases' => [] ); | 
            
            
              | 248 | 
                          ->json_hasnt('/contacts')->json_hasnt('/interfaces')->json_hasnt('/aliases')->tx->res->json->{id}; | 
            
            
              | 249 | 
               | 
            
            
              | 250 | 
                      $t->get_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors/" . $vendor_id )->status_is(200)  | 
            
            
              | 251 | 
                          ->json_hasnt('/contacts')->json_hasnt('/interfaces')->json_hasnt('/aliases'); | 
            
            
              | 252 | 
               | 
            
            
              | 253 | 
                      $t->get_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors/"  | 
            
            
              | 254 | 
                              . $vendor_id => { 'x-koha-embed' => 'contacts,interfaces,aliases' } )->status_is(200) | 
            
            
              | 255 | 
                          ->json_has('/contacts/0/name')->json_has('/interfaces/0/name')->json_has('/aliases/0/alias'); | 
            
            
              | 256 | 
                  };  | 
            
            
              | 257 | 
               | 
            
        
          | 223 | 
              $schema->storage->txn_rollback;  | 
          258 | 
              $schema->storage->txn_rollback;  | 
        
        
          | 224 | 
          };  | 
          259 | 
          };  | 
        
        
          | 225 | 
           | 
          260 | 
           | 
        
        
          | 226 | 
          subtest 'update() tests' => sub { | 
          261 | 
          subtest 'update() tests' => sub { | 
        
        
          | 227 | 
           | 
          262 | 
           | 
        
          
            
              | 228 | 
                  plan tests => 15;  | 
              263 | 
                  plan tests => 16;  | 
            
        
          | 229 | 
           | 
          264 | 
           | 
        
        
          | 230 | 
              $schema->storage->txn_begin;  | 
          265 | 
              $schema->storage->txn_begin;  | 
        
        
          | 231 | 
           | 
          266 | 
           | 
        
  
    | 
      
            Lines 294-305
          subtest 'update() tests' => sub {
      
      
        Link Here
      
     | 
  
        
          | 294 | 
              $t->put_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors/"  | 
          329 | 
              $t->put_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors/"  | 
        
        
          | 295 | 
                      . $non_existent_id => json => $vendor_with_updated_field )->status_is(404);  | 
          330 | 
                      . $non_existent_id => json => $vendor_with_updated_field )->status_is(404);  | 
        
        
          | 296 | 
           | 
          331 | 
           | 
        
            
              | 297 | 
                  $schema->storage->txn_rollback;  | 
               | 
               | 
            
            
              | 298 | 
               | 
            
        
          | 299 | 
              # Wrong method (POST)  | 
          332 | 
              # Wrong method (POST)  | 
        
        
          | 300 | 
              $t->post_ok(  | 
          333 | 
              $t->post_ok(  | 
        
        
          | 301 | 
                  "//$auth_userid:$password@/api/v1/acquisitions/vendors/" . $vendor->id => json => $vendor_with_updated_field )  | 
          334 | 
                  "//$auth_userid:$password@/api/v1/acquisitions/vendors/" . $vendor->id => json => $vendor_with_updated_field )  | 
        
        
          | 302 | 
                  ->status_is(404);  | 
          335 | 
                  ->status_is(404);  | 
        
            
               | 
               | 
              336 | 
               | 
            
            
              | 337 | 
                  subtest 'relationships contracts, interfaces, aliases' => sub { | 
            
            
              | 338 | 
                      plan tests => 30;  | 
            
            
              | 339 | 
                      my $vendor = $builder->build_object( { class => 'Koha::Acquisition::Booksellers' } ); | 
            
            
              | 340 | 
                      $vendor->contacts( [] );  | 
            
            
              | 341 | 
                      $vendor->interfaces( [] );  | 
            
            
              | 342 | 
                      $vendor->aliases( [] );  | 
            
            
              | 343 | 
               | 
            
            
              | 344 | 
                      $t->get_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors/"  | 
            
            
              | 345 | 
                              . $vendor->id => { 'x-koha-embed' => 'contacts,interfaces,aliases' } )->status_is(200) | 
            
            
              | 346 | 
                          ->json_is( '/contacts', [] )->json_is( '/interfaces', [] )->json_is( '/aliases', [] );  | 
            
            
              | 347 | 
               | 
            
            
              | 348 | 
                      my $api_vendor = $vendor->to_api;  | 
            
            
              | 349 | 
                      delete $api_vendor->{id}; | 
            
            
              | 350 | 
               | 
            
            
              | 351 | 
                      $api_vendor->{contacts}   = [ { name  => 'contact name' } ]; | 
            
            
              | 352 | 
                      $api_vendor->{interfaces} = [ { name  => 'interface name' } ]; | 
            
            
              | 353 | 
                      $api_vendor->{aliases}    = [ { alias => 'foo' } ]; | 
            
            
              | 354 | 
               | 
            
            
              | 355 | 
                      $t->put_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors/" . $vendor->id => json => $api_vendor )  | 
            
            
              | 356 | 
                          ->status_is( 200, 'REST3 .2.1' )->json_is( '/name' => $vendor->name )->json_hasnt('/contacts') | 
            
            
              | 357 | 
                          ->json_hasnt('/interfaces')->json_hasnt('/aliases'); | 
            
            
              | 358 | 
               | 
            
            
              | 359 | 
                      $t->get_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors/"  | 
            
            
              | 360 | 
                              . $vendor->id => { 'x-koha-embed' => 'contacts,interfaces,aliases' } )->status_is(200) | 
            
            
              | 361 | 
                          ->json_has('/contacts/0/name')->json_has('/interfaces/0/name')->json_has('/aliases/0/alias'); | 
            
            
              | 362 | 
               | 
            
            
              | 363 | 
                      delete $api_vendor->{contacts}; | 
            
            
              | 364 | 
                      delete $api_vendor->{interfaces}; | 
            
            
              | 365 | 
                      delete $api_vendor->{aliases}; | 
            
            
              | 366 | 
               | 
            
            
              | 367 | 
                      $t->put_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors/" . $vendor->id => json => $api_vendor )  | 
            
            
              | 368 | 
                          ->status_is( 200, 'REST3 .2.1' );  | 
            
            
              | 369 | 
               | 
            
            
              | 370 | 
                      $t->get_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors/"  | 
            
            
              | 371 | 
                              . $vendor->id => { 'x-koha-embed' => 'contacts,interfaces,aliases' } )->status_is(200) | 
            
            
              | 372 | 
                          ->json_has('/contacts/0/name')->json_has('/interfaces/0/name')->json_has('/aliases/0/alias'); | 
            
            
              | 373 | 
               | 
            
            
              | 374 | 
                      $api_vendor->{contacts}   = []; | 
            
            
              | 375 | 
                      $api_vendor->{interfaces} = []; | 
            
            
              | 376 | 
                      $api_vendor->{aliases}    = []; | 
            
            
              | 377 | 
               | 
            
            
              | 378 | 
                      $t->put_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors/" . $vendor->id => json => $api_vendor )  | 
            
            
              | 379 | 
                          ->status_is( 200, 'REST3 .2.1' );  | 
            
            
              | 380 | 
               | 
            
            
              | 381 | 
                      $t->get_ok( "//$auth_userid:$password@/api/v1/acquisitions/vendors/"  | 
            
            
              | 382 | 
                              . $vendor->id => { 'x-koha-embed' => 'contacts,interfaces,aliases' } )->status_is(200) | 
            
            
              | 383 | 
                          ->json_is( '/contacts', [] )->json_is( '/interfaces', [] )->json_is( '/aliases', [] );  | 
            
            
              | 384 | 
                  };  | 
            
            
              | 385 | 
               | 
            
            
              | 386 | 
                  $schema->storage->txn_rollback;  | 
            
            
              | 387 | 
               | 
            
        
          | 303 | 
          };  | 
          388 | 
          };  | 
        
        
          | 304 | 
           | 
          389 | 
           | 
        
        
          | 305 | 
          subtest 'delete() tests' => sub { | 
          390 | 
          subtest 'delete() tests' => sub { | 
        
            
              | 306 | 
              -   | 
               | 
               |