| Lines 209-258
          get '/build_query' => sub {
      
      
        Link Here | 
        
          | 209 | get '/stash_embed' => sub { | 209 | get '/stash_embed' => sub { | 
        
          | 210 |     my $c = shift; | 210 |     my $c = shift; | 
        
          | 211 |  | 211 |  | 
          
            
              | 212 |     try { | 212 |     $c->stash_embed(); | 
            
              | 213 |         $c->stash_embed( | 213 |     my $embed = $c->stash('koha.embed'); | 
            
              | 214 |             { |  |  | 
            
              | 215 |                 spec => { | 
            
              | 216 |                     'x-koha-embed' => [ | 
            
              | 217 |                         'checkouts', | 
            
              | 218 |                         'checkouts.item', | 
            
              | 219 |                         'library', | 
            
              | 220 |                         'holds+count' | 
            
              | 221 |                     ] | 
            
              | 222 |                 } | 
            
              | 223 |             } | 
            
              | 224 |         ); | 
            
              | 225 |  | 
            
              | 226 |         $c->render( | 
            
              | 227 |             status => 200, | 
            
              | 228 |             json   => $c->stash( 'koha.embed' ) | 
            
              | 229 |         ); | 
            
              | 230 |     } | 
            
              | 231 |     catch { | 
            
              | 232 |         $c->render( | 
            
              | 233 |             status => 400, | 
            
              | 234 |             json   => { error => "$_" } | 
            
              | 235 |         ); | 
            
              | 236 |     }; | 
            
              | 237 | }; | 
        
          | 238 |  | 214 |  | 
          
            
              | 239 | get '/stash_embed_no_spec' => sub { | 215 |     $c->render( | 
            
              | 240 |     my $c = shift; | 216 |         status => 200, | 
            
              | 241 |  | 217 |         json   => $embed | 
            
              | 242 |     try { | 218 |     ); | 
            
              | 243 |         $c->stash_embed({ spec => {} }); |  |  | 
            
              | 244 |  | 
            
              | 245 |         $c->render( | 
            
              | 246 |             status => 200, | 
            
              | 247 |             json   => $c->stash( 'koha.embed' ) | 
            
              | 248 |         ); | 
            
              | 249 |     } | 
            
              | 250 |     catch { | 
            
              | 251 |         $c->render( | 
            
              | 252 |             status => 400, | 
            
              | 253 |             json   => { error => "$_" } | 
            
              | 254 |         ); | 
            
              | 255 |     }; | 
        
          | 256 | }; | 219 | }; | 
        
          | 257 |  | 220 |  | 
        
          | 258 | get '/stash_overrides' => sub { | 221 | get '/stash_overrides' => sub { | 
  
    | Lines 466-503
          subtest '_build_query_params_from_api' => sub {
      
      
        Link Here | 
        
          | 466 |  | 429 |  | 
        
          | 467 | subtest 'stash_embed() tests' => sub { | 430 | subtest 'stash_embed() tests' => sub { | 
        
          | 468 |  | 431 |  | 
          
            
              | 469 |     plan tests => 15; | 432 |     plan tests => 8; | 
        
          | 470 |  | 433 |  | 
        
          | 471 |     my $t = Test::Mojo->new; | 434 |     my $t = Test::Mojo->new; | 
        
          | 472 |  | 435 |  | 
        
          | 473 |     $t->get_ok( '/stash_embed' => { 'x-koha-embed' => 'checkouts,checkouts.item' } ) | 436 |     $t->get_ok( '/stash_embed' => { 'x-koha-embed' => 'checkouts,checkouts.item' } ) | 
          
            
              | 474 |       ->status_is(200) | 437 |       ->json_is( { checkouts => { children => { item => { } } } } ); | 
            
              | 475 |       ->json_is( { checkouts => { children => { item => {} } } } ); |  |  | 
        
          | 476 |  | 438 |  | 
        
          | 477 |     $t->get_ok( '/stash_embed' => { 'x-koha-embed' => 'checkouts,checkouts.item,library' } ) | 439 |     $t->get_ok( '/stash_embed' => { 'x-koha-embed' => 'checkouts,checkouts.item,library' } ) | 
            
              | 478 |       ->status_is(200) |  |  | 
        
          | 479 |       ->json_is( { checkouts => { children => { item => {} } }, library => {} } ); | 440 |       ->json_is( { checkouts => { children => { item => {} } }, library => {} } ); | 
        
          | 480 |  | 441 |  | 
        
          | 481 |     $t->get_ok( '/stash_embed' => { 'x-koha-embed' => 'holds+count' } ) | 442 |     $t->get_ok( '/stash_embed' => { 'x-koha-embed' => 'holds+count' } ) | 
            
              | 482 |       ->status_is(200) |  |  | 
        
          | 483 |       ->json_is( { holds_count => { is_count => 1 } } ); | 443 |       ->json_is( { holds_count => { is_count => 1 } } ); | 
        
          | 484 |  | 444 |  | 
        
          | 485 |     $t->get_ok( '/stash_embed' => { 'x-koha-embed' => 'checkouts,checkouts.item,patron' } ) | 445 |     $t->get_ok( '/stash_embed' => { 'x-koha-embed' => 'checkouts,checkouts.item,patron' } ) | 
          
            
              | 486 |       ->status_is(400) | 446 |       ->json_is({ | 
            
              | 487 |       ->json_is( | 447 |             checkouts => { children => { item => {} } }, | 
            
              | 488 |         { | 448 |             patron    => {} | 
            
              | 489 |             error => qq{Exception 'Koha::Exceptions::BadParameter' thrown 'Embeding patron is not authorised. Check your x-koha-embed headers or remove it.'\n} | 449 |         }); | 
            
              | 490 |         } |  |  | 
            
              | 491 |       ); | 
            
              | 492 |  | 
            
              | 493 |     $t->get_ok( '/stash_embed_no_spec' => { 'x-koha-embed' => 'checkouts,checkouts.item,patron' } ) | 
            
              | 494 |       ->status_is(400) | 
            
              | 495 |       ->json_is( | 
            
              | 496 |         { | 
            
              | 497 |             error => qq{Exception 'Koha::Exceptions::BadParameter' thrown 'Embedding objects is not allowed on this endpoint.'\n} | 
            
              | 498 |         } | 
            
              | 499 |       ); | 
            
              | 500 |  | 
        
          | 501 | }; | 450 | }; | 
        
          | 502 |  | 451 |  | 
        
          | 503 | subtest 'stash_overrides() tests' => sub { | 452 | subtest 'stash_overrides() tests' => sub { | 
            
              | 504 | -  |  |  |