|
Lines 17-24
Link Here
|
| 17 |
|
17 |
|
| 18 |
use Modern::Perl; |
18 |
use Modern::Perl; |
| 19 |
|
19 |
|
| 20 |
use Test::More tests => 30; |
20 |
use Test::More tests => 43; |
| 21 |
use Test::Mojo; |
21 |
use Test::Mojo; |
|
|
22 |
use t::lib::TestBuilder; |
| 22 |
|
23 |
|
| 23 |
use DateTime; |
24 |
use DateTime; |
| 24 |
|
25 |
|
|
Lines 34-43
my $dbh = C4::Context->dbh;
Link Here
|
| 34 |
$dbh->{AutoCommit} = 0; |
35 |
$dbh->{AutoCommit} = 0; |
| 35 |
$dbh->{RaiseError} = 1; |
36 |
$dbh->{RaiseError} = 1; |
| 36 |
|
37 |
|
|
|
38 |
my $builder = t::lib::TestBuilder->new(); |
| 37 |
my $t = Test::Mojo->new('Koha::REST::V1'); |
39 |
my $t = Test::Mojo->new('Koha::REST::V1'); |
| 38 |
|
40 |
|
| 39 |
my $categorycode = Koha::Database->new()->schema()->resultset('Category')->first()->categorycode(); |
41 |
my $categorycode = $builder->build({ source => 'Category' })->{ categorycode }; |
| 40 |
my $branchcode = Koha::Database->new()->schema()->resultset('Branch')->first()->branchcode(); |
42 |
my $categorycode2 = $builder->build({ source => 'Category' })->{ categorycode }; |
|
|
43 |
my $branchcode = $builder->build({ source => 'Branch' })->{ branchcode }; |
| 41 |
|
44 |
|
| 42 |
my $borrower = Koha::Borrower->new; |
45 |
my $borrower = Koha::Borrower->new; |
| 43 |
$borrower->categorycode( $categorycode ); |
46 |
$borrower->categorycode( $categorycode ); |
|
Lines 47-53
$borrower->store;
Link Here
|
| 47 |
my $borrowernumber = $borrower->borrowernumber; |
50 |
my $borrowernumber = $borrower->borrowernumber; |
| 48 |
|
51 |
|
| 49 |
my $borrower2 = Koha::Borrower->new; |
52 |
my $borrower2 = Koha::Borrower->new; |
| 50 |
$borrower2->categorycode( $categorycode ); |
53 |
$borrower2->categorycode( $categorycode2 ); |
| 51 |
$borrower2->branchcode( $branchcode ); |
54 |
$borrower2->branchcode( $branchcode ); |
| 52 |
$borrower2->surname("Test Surname 2"); |
55 |
$borrower2->surname("Test Surname 2"); |
| 53 |
$borrower2->store; |
56 |
$borrower2->store; |
|
Lines 55-60
my $borrowernumber2 = $borrower2->borrowernumber;
Link Here
|
| 55 |
|
58 |
|
| 56 |
my $biblionumber = create_biblio('RESTful Web APIs'); |
59 |
my $biblionumber = create_biblio('RESTful Web APIs'); |
| 57 |
my $itemnumber = create_item($biblionumber, 'TEST000001'); |
60 |
my $itemnumber = create_item($biblionumber, 'TEST000001'); |
|
|
61 |
my $itemnumber2 = create_item($biblionumber, 'TEST000002'); |
| 62 |
|
| 63 |
my $biblionumber2 = create_biblio('Calamity'); |
| 64 |
my $itemnumber3 = create_item($biblionumber2, 'TEST000003'); |
| 65 |
my $itemnumber4 = create_item($biblionumber2, 'TEST000004'); |
| 66 |
my $itemnumber5 = create_item($biblionumber2, 'TEST000005'); |
| 58 |
|
67 |
|
| 59 |
my $reserve_id = C4::Reserves::AddReserve($branchcode, $borrowernumber, |
68 |
my $reserve_id = C4::Reserves::AddReserve($branchcode, $borrowernumber, |
| 60 |
$biblionumber, undef, 1, undef, undef, undef, '', $itemnumber); |
69 |
$biblionumber, undef, 1, undef, undef, undef, '', $itemnumber); |
|
Lines 99-119
$dbh->do('DELETE FROM issuingrules');
Link Here
|
| 99 |
$dbh->do(q{ |
108 |
$dbh->do(q{ |
| 100 |
INSERT INTO issuingrules (categorycode, branchcode, itemtype, reservesallowed) |
109 |
INSERT INTO issuingrules (categorycode, branchcode, itemtype, reservesallowed) |
| 101 |
VALUES (?, ?, ?, ?) |
110 |
VALUES (?, ?, ?, ?) |
| 102 |
}, {}, '*', '*', '*', 1); |
111 |
}, {}, $categorycode, '*', '*', 1); |
|
|
112 |
|
| 113 |
$dbh->do(q{ |
| 114 |
INSERT INTO issuingrules (categorycode, branchcode, itemtype, holds_per_record, reservesallowed) |
| 115 |
VALUES (?, ?, ?, ?, ?) |
| 116 |
}, {}, $categorycode2, '*', '*', '3', 5); |
| 103 |
|
117 |
|
| 104 |
my $expirationdate = DateTime->now->add(days => 10)->ymd; |
118 |
my $expirationdate = DateTime->now->add(days => 10)->ymd; |
| 105 |
my $post_data = { |
119 |
my $post_data = [{ |
| 106 |
borrowernumber => int($borrowernumber), |
120 |
borrowernumber => int($borrowernumber), |
| 107 |
biblionumber => int($biblionumber), |
121 |
biblionumber => int($biblionumber), |
| 108 |
itemnumber => int($itemnumber), |
122 |
itemnumber => int($itemnumber), |
| 109 |
branchcode => $branchcode, |
123 |
branchcode => $branchcode, |
| 110 |
expirationdate => $expirationdate, |
124 |
expirationdate => $expirationdate, |
| 111 |
}; |
125 |
}]; |
| 112 |
$t->post_ok("/api/v1/reserves" => json => $post_data) |
126 |
$t->post_ok("/api/v1/reserves" => json => $post_data) |
| 113 |
->status_is(201) |
127 |
->status_is(201) |
| 114 |
->json_has('/reserve_id'); |
128 |
->json_has('/0/reserve_id'); |
| 115 |
|
129 |
|
| 116 |
$reserve_id = $t->tx->res->json->{reserve_id}; |
130 |
$reserve_id = $t->tx->res->json->[0]->{reserve_id}; |
| 117 |
|
131 |
|
| 118 |
$t->get_ok("/api/v1/reserves?borrowernumber=$borrowernumber") |
132 |
$t->get_ok("/api/v1/reserves?borrowernumber=$borrowernumber") |
| 119 |
->status_is(200) |
133 |
->status_is(200) |
|
Lines 121-130
$t->get_ok("/api/v1/reserves?borrowernumber=$borrowernumber")
Link Here
|
| 121 |
->json_is('/0/expirationdate', $expirationdate) |
135 |
->json_is('/0/expirationdate', $expirationdate) |
| 122 |
->json_is('/0/branchcode', $branchcode); |
136 |
->json_is('/0/branchcode', $branchcode); |
| 123 |
|
137 |
|
|
|
138 |
$post_data->[0]->{biblionumber} = int($biblionumber2); |
| 139 |
$post_data->[0]->{itemnumber} = int($itemnumber3); |
| 124 |
$t->post_ok("/api/v1/reserves" => json => $post_data) |
140 |
$t->post_ok("/api/v1/reserves" => json => $post_data) |
| 125 |
->status_is(403) |
141 |
->status_is(403) |
| 126 |
->json_like('/error', qr/tooManyReserves/); |
142 |
->json_like('/error', qr/tooManyReserves/); |
| 127 |
|
143 |
|
|
|
144 |
$post_data = [ |
| 145 |
{ |
| 146 |
borrowernumber => int($borrowernumber2), |
| 147 |
biblionumber => int($biblionumber2), |
| 148 |
itemnumber => int($itemnumber3), |
| 149 |
branchcode => $branchcode, |
| 150 |
}, |
| 151 |
{ |
| 152 |
borrowernumber => int($borrowernumber2), |
| 153 |
biblionumber => int($biblionumber2), |
| 154 |
branchcode => $branchcode, |
| 155 |
}, |
| 156 |
]; |
| 157 |
|
| 158 |
$t->post_ok("/api/v1/reserves" => json => $post_data) |
| 159 |
->status_is(400) |
| 160 |
->json_like('/error', qr/Differents holds level/); |
| 161 |
|
| 162 |
delete $post_data->[0]->{itemnumber}; |
| 163 |
$t->post_ok("/api/v1/reserves" => json => $post_data) |
| 164 |
->status_is(201) |
| 165 |
->json_has('/0/reserve_id') |
| 166 |
->json_has('/1/reserve_id'); |
| 167 |
|
| 168 |
$t->post_ok("/api/v1/reserves" => json => $post_data) |
| 169 |
->status_is(400) |
| 170 |
->json_like('/error', qr/Too many holds/); |
| 171 |
|
| 172 |
delete $post_data->[1]; |
| 173 |
$post_data->[0]->{itemnumber} = int($itemnumber3); |
| 174 |
$t->post_ok("/api/v1/reserves" => json => $post_data) |
| 175 |
->status_is(400) |
| 176 |
->json_like('/error', qr/Differents holds level/); |
| 177 |
|
| 128 |
|
178 |
|
| 129 |
$dbh->rollback; |
179 |
$dbh->rollback; |
| 130 |
|
180 |
|
| 131 |
- |
|
|