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::DateUtils;
32
use Koha::DateUtils;
Lines 49-54 my $tx; Link Here
49
50
50
my $categorycode = $builder->build({ source => 'Category' })->{categorycode};
51
my $categorycode = $builder->build({ source => 'Category' })->{categorycode};
51
my $branchcode = $builder->build({ source => 'Branch' })->{branchcode};
52
my $branchcode = $builder->build({ source => 'Branch' })->{branchcode};
53
my $itemtype = $builder->build({ source => 'Itemtype' })->{itemtype};
52
54
53
# User without any permissions
55
# User without any permissions
54
my $nopermission = $builder->build({
56
my $nopermission = $builder->build({
Lines 123-132 $session3->param('lasttime', time()); Link Here
123
$session3->flush;
125
$session3->flush;
124
126
125
my $biblionumber = create_biblio('RESTful Web APIs');
127
my $biblionumber = create_biblio('RESTful Web APIs');
126
my $itemnumber = create_item($biblionumber, 'TEST000001');
128
my $item = create_item($biblionumber, 'TEST000001');
129
my $itemnumber = $item->{itemnumber};
130
$item->{itype} = $itemtype;
131
C4::Items::ModItem($item, $biblionumber, $itemnumber);
127
132
128
my $biblionumber2 = create_biblio('RESTful Web APIs');
133
my $biblionumber2 = create_biblio('RESTful Web APIs');
129
my $itemnumber2 = create_item($biblionumber2, 'TEST000002');
134
my $item2 = create_item($biblionumber2, 'TEST000002');
135
my $itemnumber2 = $item2->{itemnumber};
130
136
131
my $dbh = C4::Context->dbh;
137
my $dbh = C4::Context->dbh;
132
$dbh->do('DELETE FROM reserves');
138
$dbh->do('DELETE FROM reserves');
Lines 331-336 subtest "Test endpoints with permission" => sub { Link Here
331
      ->json_like('/error', qr/tooManyReserves/);
337
      ->json_like('/error', qr/tooManyReserves/);
332
};
338
};
333
339
340
341
subtest 'Reserves with itemtype' => sub {
342
    plan tests => 9;
343
344
    my $post_data = {
345
        borrowernumber => int($patron_1->borrowernumber),
346
        biblionumber => int($biblionumber),
347
        branchcode => $branchcode,
348
        itemtype => $itemtype,
349
    };
350
351
    $tx = $t->ua->build_tx(DELETE => "/api/v1/holds/$reserve_id");
352
    $tx->req->cookies({name => 'CGISESSID', value => $session3->id});
353
    $t->request_ok($tx)
354
      ->status_is(200);
355
356
    $tx = $t->ua->build_tx(POST => "/api/v1/holds" => json => $post_data);
357
    $tx->req->cookies({name => 'CGISESSID', value => $session3->id});
358
    $t->request_ok($tx)
359
      ->status_is(201)
360
      ->json_has('/reserve_id');
361
362
    $reserve_id = $t->tx->res->json->{reserve_id};
363
364
    $tx = $t->ua->build_tx(GET => "/api/v1/holds?borrowernumber=" . $patron_1->borrowernumber);
365
    $tx->req->cookies({name => 'CGISESSID', value => $session->id});
366
    $t->request_ok($tx)
367
      ->status_is(200)
368
      ->json_is('/0/reserve_id', $reserve_id)
369
      ->json_is('/0/itemtype', $itemtype);
370
};
371
334
$schema->storage->txn_rollback;
372
$schema->storage->txn_rollback;
335
373
336
sub create_biblio {
374
sub create_biblio {
Lines 357-361 sub create_item { Link Here
357
        }
395
        }
358
    );
396
    );
359
397
360
    return $item->{itemnumber};
398
    return $item;
361
}
399
}
362
- 

Return to bug 16213