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); |