Bugzilla – Attachment 70942 Details for
Bug 16213
Allow to select hold's itemtype when using API
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 16213: Allow to select hold's itemtype when using API
Bug-16213-Allow-to-select-holds-itemtype-when-usin.patch (text/plain), 5.03 KB, created by
Josef Moravec
on 2018-01-26 09:30:03 UTC
(
hide
)
Description:
Bug 16213: Allow to select hold's itemtype when using API
Filename:
MIME Type:
Creator:
Josef Moravec
Created:
2018-01-26 09:30:03 UTC
Size:
5.03 KB
patch
obsolete
>From 9ec56e65c0235fc8da2da425d86876ae91f2d652 Mon Sep 17 00:00:00 2001 >From: Julian Maurice <julian.maurice@biblibre.com> >Date: Wed, 6 Apr 2016 13:12:51 +0200 >Subject: [PATCH] Bug 16213: Allow to select hold's itemtype when using API > >Test plan: >1/ Use your usual "REST testing" tool to place a title-level hold with >an itemtype. The request should look like this: > >POST /api/v1/holds >{ > "borrowernumber": 1234, > "biblionumber": 456, > "branchcode": "CPL", > "itemtype": "A" >} > >2/ Check that the hold was placed and the itemtype is correctly selected >3/ prove t/db_dependent/api/v1/holds.t > >Signed-off-by: Benjamin Rokseth <benjamin.rokseth@kul.oslo.kommune.no> > >Signed-off-by: Josef Moravec <josef.moravec@gmail.com> >--- > Koha/REST/V1/Hold.pm | 4 +++- > api/v1/swagger/paths/holds.json | 4 ++++ > t/db_dependent/api/v1/holds.t | 46 +++++++++++++++++++++++++++++++++++++---- > 3 files changed, 49 insertions(+), 5 deletions(-) > >diff --git a/Koha/REST/V1/Hold.pm b/Koha/REST/V1/Hold.pm >index 3ab15cd..2927a7a 100644 >--- a/Koha/REST/V1/Hold.pm >+++ b/Koha/REST/V1/Hold.pm >@@ -50,6 +50,8 @@ sub add { > my $itemnumber = $body->{itemnumber}; > my $branchcode = $body->{branchcode}; > my $expirationdate = $body->{expirationdate}; >+ my $itemtype = $body->{itemtype}; >+ > my $borrower = Koha::Patrons->find($borrowernumber); > unless ($borrower) { > return $c->render( status => 404, >@@ -103,7 +105,7 @@ sub add { > > my $reserve_id = C4::Reserves::AddReserve($branchcode, $borrowernumber, > $biblionumber, undef, $priority, undef, $expirationdate, undef, >- $biblio->title, $itemnumber); >+ $biblio->title, $itemnumber, undef, $itemtype); > > unless ($reserve_id) { > return $c->render( status => 500, openapi => { >diff --git a/api/v1/swagger/paths/holds.json b/api/v1/swagger/paths/holds.json >index b2f542a..e89511d 100644 >--- a/api/v1/swagger/paths/holds.json >+++ b/api/v1/swagger/paths/holds.json >@@ -190,6 +190,10 @@ > "description": "Hold end date", > "type": "string", > "format": "date" >+ }, >+ "itemtype": { >+ "description": "Limit reserve on one itemtype (ignored for item-level holds)", >+ "type": "string" > } > } > } >diff --git a/t/db_dependent/api/v1/holds.t b/t/db_dependent/api/v1/holds.t >index 8397f30..f74bf12 100644 >--- a/t/db_dependent/api/v1/holds.t >+++ b/t/db_dependent/api/v1/holds.t >@@ -17,7 +17,7 @@ > > use Modern::Perl; > >-use Test::More tests => 4; >+use Test::More tests => 5; > use Test::Mojo; > use t::lib::TestBuilder; > use t::lib::Mocks; >@@ -26,6 +26,7 @@ use DateTime; > > use C4::Context; > use C4::Reserves; >+use C4::Items; > > use Koha::Database; > use Koha::DateUtils; >@@ -49,6 +50,7 @@ my $tx; > > my $categorycode = $builder->build({ source => 'Category' })->{categorycode}; > my $branchcode = $builder->build({ source => 'Branch' })->{branchcode}; >+my $itemtype = $builder->build({ source => 'Itemtype' })->{itemtype}; > > # User without any permissions > my $nopermission = $builder->build({ >@@ -123,10 +125,14 @@ $session3->param('lasttime', time()); > $session3->flush; > > my $biblionumber = create_biblio('RESTful Web APIs'); >-my $itemnumber = create_item($biblionumber, 'TEST000001'); >+my $item = create_item($biblionumber, 'TEST000001'); >+my $itemnumber = $item->{itemnumber}; >+$item->{itype} = $itemtype; >+C4::Items::ModItem($item, $biblionumber, $itemnumber); > > my $biblionumber2 = create_biblio('RESTful Web APIs'); >-my $itemnumber2 = create_item($biblionumber2, 'TEST000002'); >+my $item2 = create_item($biblionumber2, 'TEST000002'); >+my $itemnumber2 = $item2->{itemnumber}; > > my $dbh = C4::Context->dbh; > $dbh->do('DELETE FROM reserves'); >@@ -331,6 +337,38 @@ subtest "Test endpoints with permission" => sub { > ->json_like('/error', qr/tooManyReserves/); > }; > >+ >+subtest 'Reserves with itemtype' => sub { >+ plan tests => 9; >+ >+ my $post_data = { >+ borrowernumber => int($patron_1->borrowernumber), >+ biblionumber => int($biblionumber), >+ branchcode => $branchcode, >+ itemtype => $itemtype, >+ }; >+ >+ $tx = $t->ua->build_tx(DELETE => "/api/v1/holds/$reserve_id"); >+ $tx->req->cookies({name => 'CGISESSID', value => $session3->id}); >+ $t->request_ok($tx) >+ ->status_is(200); >+ >+ $tx = $t->ua->build_tx(POST => "/api/v1/holds" => json => $post_data); >+ $tx->req->cookies({name => 'CGISESSID', value => $session3->id}); >+ $t->request_ok($tx) >+ ->status_is(201) >+ ->json_has('/reserve_id'); >+ >+ $reserve_id = $t->tx->res->json->{reserve_id}; >+ >+ $tx = $t->ua->build_tx(GET => "/api/v1/holds?borrowernumber=" . $patron_1->borrowernumber); >+ $tx->req->cookies({name => 'CGISESSID', value => $session->id}); >+ $t->request_ok($tx) >+ ->status_is(200) >+ ->json_is('/0/reserve_id', $reserve_id) >+ ->json_is('/0/itemtype', $itemtype); >+}; >+ > $schema->storage->txn_rollback; > > sub create_biblio { >@@ -357,5 +395,5 @@ sub create_item { > } > ); > >- return $item->{itemnumber}; >+ return $item; > } >-- >2.1.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 16213
:
49951
|
50017
|
68179
| 70942 |
70943