|
Lines 81-87
subtest 'list() tests' => sub {
Link Here
|
| 81 |
$userid = $patron->userid; |
81 |
$userid = $patron->userid; |
| 82 |
|
82 |
|
| 83 |
$t->get_ok( "//$userid:$password@/api/v1/items?_per_page=10" ) |
83 |
$t->get_ok( "//$userid:$password@/api/v1/items?_per_page=10" ) |
| 84 |
->status_is( 200, 'SWAGGER3.2.2' ); |
84 |
->status_is( 200, 'REST3.2.2' ); |
| 85 |
|
85 |
|
| 86 |
my $response_count = scalar @{ $t->tx->res->json }; |
86 |
my $response_count = scalar @{ $t->tx->res->json }; |
| 87 |
|
87 |
|
|
Lines 89-99
subtest 'list() tests' => sub {
Link Here
|
| 89 |
|
89 |
|
| 90 |
$t->get_ok( "//$userid:$password@/api/v1/items?external_id=" . $item->barcode ) |
90 |
$t->get_ok( "//$userid:$password@/api/v1/items?external_id=" . $item->barcode ) |
| 91 |
->status_is(200) |
91 |
->status_is(200) |
| 92 |
->json_is( '' => [ $item->to_api ], 'SWAGGER3.3.2'); |
92 |
->json_is( '' => [ $item->to_api ], 'REST3.3.2'); |
| 93 |
|
93 |
|
| 94 |
$t->get_ok( "//$userid:$password@/api/v1/items?external_id=" . $item->barcode => {'x-koha-embed' => 'biblio'} ) |
94 |
$t->get_ok( "//$userid:$password@/api/v1/items?external_id=" . $item->barcode => {'x-koha-embed' => 'biblio'} ) |
| 95 |
->status_is(200) |
95 |
->status_is(200) |
| 96 |
->json_is( '' => [ { %{$item->to_api}, biblio => $item->biblio->to_api } ], 'SWAGGER3.3.2'); |
96 |
->json_is( '' => [ { %{$item->to_api}, biblio => $item->biblio->to_api } ], 'REST3.3.2'); |
| 97 |
|
97 |
|
| 98 |
|
98 |
|
| 99 |
my $barcode = $item->barcode; |
99 |
my $barcode = $item->barcode; |
|
Lines 284-291
subtest 'get() tests' => sub {
Link Here
|
| 284 |
$userid = $patron->userid; |
284 |
$userid = $patron->userid; |
| 285 |
|
285 |
|
| 286 |
$t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber ) |
286 |
$t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber ) |
| 287 |
->status_is( 200, 'SWAGGER3.2.2' ) |
287 |
->status_is( 200, 'REST3.2.2' ) |
| 288 |
->json_is( '' => $item->to_api, 'SWAGGER3.3.2' ); |
288 |
->json_is( '' => $item->to_api, 'REST3.3.2' ); |
| 289 |
|
289 |
|
| 290 |
my $non_existent_code = $item->itemnumber; |
290 |
my $non_existent_code = $item->itemnumber; |
| 291 |
$item->delete; |
291 |
$item->delete; |
|
Lines 305-318
subtest 'get() tests' => sub {
Link Here
|
| 305 |
isnt( $biblio->itemtype, $itype->itemtype, "Test biblio level itemtype and item level itemtype do not match"); |
305 |
isnt( $biblio->itemtype, $itype->itemtype, "Test biblio level itemtype and item level itemtype do not match"); |
| 306 |
|
306 |
|
| 307 |
$t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber ) |
307 |
$t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber ) |
| 308 |
->status_is( 200, 'SWAGGER3.2.2' ) |
308 |
->status_is( 200, 'REST3.2.2' ) |
| 309 |
->json_is( '/item_type_id' => $itype->itemtype, 'item-level_itypes:0' ) |
309 |
->json_is( '/item_type_id' => $itype->itemtype, 'item-level_itypes:0' ) |
| 310 |
->json_is( '/effective_item_type_id' => $biblio->itemtype, 'item-level_itypes:0' ); |
310 |
->json_is( '/effective_item_type_id' => $biblio->itemtype, 'item-level_itypes:0' ); |
| 311 |
|
311 |
|
| 312 |
t::lib::Mocks::mock_preference( 'item-level_itypes', 1 ); |
312 |
t::lib::Mocks::mock_preference( 'item-level_itypes', 1 ); |
| 313 |
|
313 |
|
| 314 |
$t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber ) |
314 |
$t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber ) |
| 315 |
->status_is( 200, 'SWAGGER3.2.2' ) |
315 |
->status_is( 200, 'REST3.2.2' ) |
| 316 |
->json_is( '/item_type_id' => $itype->itemtype, 'item-level_itype:1' ) |
316 |
->json_is( '/item_type_id' => $itype->itemtype, 'item-level_itype:1' ) |
| 317 |
->json_is( '/effective_item_type_id' => $itype->itemtype, 'item-level_itypes:1' ); |
317 |
->json_is( '/effective_item_type_id' => $itype->itemtype, 'item-level_itypes:1' ); |
| 318 |
|
318 |
|
|
Lines 323-340
subtest 'get() tests' => sub {
Link Here
|
| 323 |
$item->notforloan(1)->store(); |
323 |
$item->notforloan(1)->store(); |
| 324 |
|
324 |
|
| 325 |
$t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber ) |
325 |
$t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber ) |
| 326 |
->status_is( 200, 'SWAGGER3.2.2' ) |
326 |
->status_is( 200, 'REST3.2.2' ) |
| 327 |
->json_is( '/not_for_loan_status' => 1, 'not_for_loan_status is 1' ) |
327 |
->json_is( '/not_for_loan_status' => 1, 'not_for_loan_status is 1' ) |
| 328 |
->json_is( '/effective_not_for_loan_status' => 1, 'effective_not_for_loan_status picks up item level' ); |
328 |
->json_is( '/effective_not_for_loan_status' => 1, 'effective_not_for_loan_status picks up item level' ); |
| 329 |
|
329 |
|
| 330 |
$item->notforloan(0)->store(); |
330 |
$item->notforloan(0)->store(); |
| 331 |
$t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber ) |
331 |
$t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber ) |
| 332 |
->status_is( 200, 'SWAGGER3.2.2' ) |
332 |
->status_is( 200, 'REST3.2.2' ) |
| 333 |
->json_is( '/not_for_loan_status' => 0, 'not_for_loan_status is 0' ) |
333 |
->json_is( '/not_for_loan_status' => 0, 'not_for_loan_status is 0' ) |
| 334 |
->json_is( '/effective_not_for_loan_status' => 2, 'effective_not_for_loan_status now picks up itemtype level - item-level_itypes:1' ); |
334 |
->json_is( '/effective_not_for_loan_status' => 2, 'effective_not_for_loan_status now picks up itemtype level - item-level_itypes:1' ); |
| 335 |
|
335 |
|
| 336 |
$itype->notforloan(0)->store(); |
336 |
$itype->notforloan(0)->store(); |
| 337 |
$t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber )->status_is( 200, 'SWAGGER3.2.2' ) |
337 |
$t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber )->status_is( 200, 'REST3.2.2' ) |
| 338 |
->json_is( '/not_for_loan_status' => 0, 'not_for_loan_status is 0' )->json_is( |
338 |
->json_is( '/not_for_loan_status' => 0, 'not_for_loan_status is 0' )->json_is( |
| 339 |
'/effective_not_for_loan_status' => 0, |
339 |
'/effective_not_for_loan_status' => 0, |
| 340 |
'effective_not_for_loan_status now picks up itemtype level and falls back to 0 because undef' |
340 |
'effective_not_for_loan_status now picks up itemtype level and falls back to 0 because undef' |
|
Lines 342-348
subtest 'get() tests' => sub {
Link Here
|
| 342 |
|
342 |
|
| 343 |
t::lib::Mocks::mock_preference( 'item-level_itypes', 0 ); |
343 |
t::lib::Mocks::mock_preference( 'item-level_itypes', 0 ); |
| 344 |
$t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber ) |
344 |
$t->get_ok( "//$userid:$password@/api/v1/items/" . $item->itemnumber ) |
| 345 |
->status_is( 200, 'SWAGGER3.2.2' ) |
345 |
->status_is( 200, 'REST3.2.2' ) |
| 346 |
->json_is( '/not_for_loan_status' => 0, 'not_for_loan_status is 0' ) |
346 |
->json_is( '/not_for_loan_status' => 0, 'not_for_loan_status is 0' ) |
| 347 |
->json_is( '/effective_not_for_loan_status' => 3, 'effective_not_for_loan_status now picks up itemtype level - item-level_itypes:0' ); |
347 |
->json_is( '/effective_not_for_loan_status' => 3, 'effective_not_for_loan_status now picks up itemtype level - item-level_itypes:0' ); |
| 348 |
|
348 |
|
|
Lines 416-423
subtest 'delete() tests' => sub {
Link Here
|
| 416 |
$fail = 0; |
416 |
$fail = 0; |
| 417 |
|
417 |
|
| 418 |
$t->delete_ok("//$userid:$password@/api/v1/items/" . $item->id) |
418 |
$t->delete_ok("//$userid:$password@/api/v1/items/" . $item->id) |
| 419 |
->status_is(204, 'SWAGGER3.2.4') |
419 |
->status_is(204, 'REST3.2.4') |
| 420 |
->content_is('', 'SWAGGER3.3.4'); |
420 |
->content_is('', 'REST3.3.4'); |
| 421 |
|
421 |
|
| 422 |
$t->delete_ok("//$userid:$password@/api/v1/items/" . $item->id) |
422 |
$t->delete_ok("//$userid:$password@/api/v1/items/" . $item->id) |
| 423 |
->status_is(404); |
423 |
->status_is(404); |