View | Details | Raw Unified | Return to bug 16213
Collapse All | Expand All

(-)a/Koha/REST/V1/Hold.pm (-1 / +3 lines)
Lines 50-55 sub add { Link Here
50
    my $itemnumber = $body->{itemnumber};
50
    my $itemnumber = $body->{itemnumber};
51
    my $branchcode = $body->{branchcode};
51
    my $branchcode = $body->{branchcode};
52
    my $expirationdate = $body->{expirationdate};
52
    my $expirationdate = $body->{expirationdate};
53
    my $itemtype = $body->{itemtype};
54
53
    my $borrower = Koha::Patrons->find($borrowernumber);
55
    my $borrower = Koha::Patrons->find($borrowernumber);
54
    unless ($borrower) {
56
    unless ($borrower) {
55
        return $c->render( status  => 404,
57
        return $c->render( status  => 404,
Lines 103-109 sub add { Link Here
103
105
104
    my $reserve_id = C4::Reserves::AddReserve($branchcode, $borrowernumber,
106
    my $reserve_id = C4::Reserves::AddReserve($branchcode, $borrowernumber,
105
        $biblionumber, undef, $priority, undef, $expirationdate, undef,
107
        $biblionumber, undef, $priority, undef, $expirationdate, undef,
106
        $biblio->title, $itemnumber);
108
        $biblio->title, $itemnumber, undef, $itemtype);
107
109
108
    unless ($reserve_id) {
110
    unless ($reserve_id) {
109
        return $c->render( status => 500, openapi => {
111
        return $c->render( status => 500, openapi => {
(-)a/api/v1/swagger/paths/holds.json (+4 lines)
Lines 190-195 Link Here
190
                "description": "Hold end date",
190
                "description": "Hold end date",
191
                "type": "string",
191
                "type": "string",
192
                "format": "date"
192
                "format": "date"
193
              },
194
              "itemtype": {
195
                "description": "Limit reserve on one itemtype (ignored for item-level holds)",
196
                "type": "string"
193
              }
197
              }
194
            }
198
            }
195
          }
199
          }
(-)a/t/db_dependent/api/v1/holds.t (-5 / +42 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 4;
20
use Test::More tests => 5;
21
use Test::Mojo;
21
use Test::Mojo;
22
use t::lib::TestBuilder;
22
use t::lib::TestBuilder;
23
use t::lib::Mocks;
23
use t::lib::Mocks;
Lines 26-31 use DateTime; Link Here
26
26
27
use C4::Context;
27
use C4::Context;
28
use C4::Reserves;
28
use C4::Reserves;
29
use C4::Items;
29
30
30
use Koha::Database;
31
use Koha::Database;
31
use Koha::Biblios;
32
use Koha::Biblios;
Lines 48-53 my $tx; Link Here
48
49
49
my $categorycode = $builder->build({ source => 'Category' })->{categorycode};
50
my $categorycode = $builder->build({ source => 'Category' })->{categorycode};
50
my $branchcode = $builder->build({ source => 'Branch' })->{branchcode};
51
my $branchcode = $builder->build({ source => 'Branch' })->{branchcode};
52
my $itemtype = $builder->build({ source => 'Itemtype' })->{itemtype};
51
53
52
# User without any permissions
54
# User without any permissions
53
my $nopermission = $builder->build({
55
my $nopermission = $builder->build({
Lines 122-131 $session3->param('lasttime', time()); Link Here
122
$session3->flush;
124
$session3->flush;
123
125
124
my $biblionumber = create_biblio('RESTful Web APIs');
126
my $biblionumber = create_biblio('RESTful Web APIs');
125
my $itemnumber = create_item($biblionumber, 'TEST000001');
127
my $item = create_item($biblionumber, 'TEST000001');
128
my $itemnumber = $item->{itemnumber};
129
$item->{itype} = $itemtype;
130
C4::Items::ModItem($item, $biblionumber, $itemnumber);
126
131
127
my $biblionumber2 = create_biblio('RESTful Web APIs');
132
my $biblionumber2 = create_biblio('RESTful Web APIs');
128
my $itemnumber2 = create_item($biblionumber2, 'TEST000002');
133
my $item2 = create_item($biblionumber2, 'TEST000002');
134
my $itemnumber2 = $item2->{itemnumber};
129
135
130
my $dbh = C4::Context->dbh;
136
my $dbh = C4::Context->dbh;
131
$dbh->do('DELETE FROM reserves');
137
$dbh->do('DELETE FROM reserves');
Lines 318-323 subtest "Test endpoints with permission" => sub { Link Here
318
      ->json_like('/error', qr/tooManyReserves/);
324
      ->json_like('/error', qr/tooManyReserves/);
319
};
325
};
320
326
327
328
subtest 'Reserves with itemtype' => sub {
329
    plan tests => 9;
330
331
    my $post_data = {
332
        borrowernumber => int($patron_1->borrowernumber),
333
        biblionumber => int($biblionumber),
334
        branchcode => $branchcode,
335
        itemtype => $itemtype,
336
    };
337
338
    $tx = $t->ua->build_tx(DELETE => "/api/v1/holds/$reserve_id");
339
    $tx->req->cookies({name => 'CGISESSID', value => $session3->id});
340
    $t->request_ok($tx)
341
      ->status_is(200);
342
343
    $tx = $t->ua->build_tx(POST => "/api/v1/holds" => json => $post_data);
344
    $tx->req->cookies({name => 'CGISESSID', value => $session3->id});
345
    $t->request_ok($tx)
346
      ->status_is(201)
347
      ->json_has('/reserve_id');
348
349
    $reserve_id = $t->tx->res->json->{reserve_id};
350
351
    $tx = $t->ua->build_tx(GET => "/api/v1/holds?borrowernumber=" . $patron_1->borrowernumber);
352
    $tx->req->cookies({name => 'CGISESSID', value => $session->id});
353
    $t->request_ok($tx)
354
      ->status_is(200)
355
      ->json_is('/0/reserve_id', $reserve_id)
356
      ->json_is('/0/itemtype', $itemtype);
357
};
358
321
$schema->storage->txn_rollback;
359
$schema->storage->txn_rollback;
322
360
323
sub create_biblio {
361
sub create_biblio {
Lines 344-348 sub create_item { Link Here
344
        }
382
        }
345
    );
383
    );
346
384
347
    return $item->{itemnumber};
385
    return $item;
348
}
386
}
349
- 

Return to bug 16213