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

(-)a/t/db_dependent/api/v1/holds.t (-37 / +47 lines)
Lines 155-170 my $suspended_until = DateTime->now->add(days => 10)->truncate( to => 'day' ); Link Here
155
my $expiration_date = DateTime->now->add(days => 10)->truncate( to => 'day' );
155
my $expiration_date = DateTime->now->add(days => 10)->truncate( to => 'day' );
156
156
157
my $post_data = {
157
my $post_data = {
158
    patron_id => int($patron_1->borrowernumber),
158
    patron_id         => $patron_1->borrowernumber,
159
    biblio_id => int($biblio_1->biblionumber),
159
    biblio_id         => $biblio_1->biblionumber,
160
    item_id => int($item_1->itemnumber),
160
    item_id           => $item_1->itemnumber,
161
    pickup_library_id => $branchcode,
161
    pickup_library_id => $branchcode,
162
    expiration_date => output_pref({ dt => $expiration_date, dateformat => 'rfc3339', dateonly => 1 }),
162
    expiration_date   => output_pref( { dt => $expiration_date, dateformat => 'rfc3339', dateonly => 1 } ),
163
    priority => 2,
164
};
163
};
165
my $put_data = {
164
my $patch_data = {
166
    priority => 2,
165
    priority        => 2,
167
    suspended_until => output_pref({ dt => $suspended_until, dateformat => 'rfc3339' }),
166
    suspended_until => output_pref( { dt => $suspended_until, dateformat => 'rfc3339' } ),
168
};
167
};
169
168
170
subtest "Test endpoints without authentication" => sub {
169
subtest "Test endpoints without authentication" => sub {
Lines 173-179 subtest "Test endpoints without authentication" => sub { Link Here
173
      ->status_is(401);
172
      ->status_is(401);
174
    $t->post_ok('/api/v1/holds')
173
    $t->post_ok('/api/v1/holds')
175
      ->status_is(401);
174
      ->status_is(401);
176
    $t->put_ok('/api/v1/holds/0')
175
    $t->patch_ok('/api/v1/holds/0')
177
      ->status_is(401);
176
      ->status_is(401);
178
    $t->delete_ok('/api/v1/holds/0')
177
    $t->delete_ok('/api/v1/holds/0')
179
      ->status_is(401);
178
      ->status_is(401);
Lines 192-198 subtest "Test endpoints without permission" => sub { Link Here
192
    $t->post_ok( "//$nopermission_userid:$password@/api/v1/holds" => json => $post_data )
191
    $t->post_ok( "//$nopermission_userid:$password@/api/v1/holds" => json => $post_data )
193
      ->status_is(403);
192
      ->status_is(403);
194
193
195
    $t->put_ok( "//$nopermission_userid:$password@/api/v1/holds/0" => json => $put_data )
194
    $t->patch_ok( "//$nopermission_userid:$password@/api/v1/holds/0" => json => $patch_data )
196
      ->status_is(403);
195
      ->status_is(403);
197
196
198
    $t->delete_ok( "//$nopermission_userid:$password@/api/v1/holds/0" )
197
    $t->delete_ok( "//$nopermission_userid:$password@/api/v1/holds/0" )
Lines 218-224 subtest "Test endpoints with permission" => sub { Link Here
218
      ->status_is(204, 'SWAGGER3.2.4')
217
      ->status_is(204, 'SWAGGER3.2.4')
219
      ->content_is('', 'SWAGGER3.3.4');
218
      ->content_is('', 'SWAGGER3.3.4');
220
219
221
    $t->put_ok( "//$userid_3:$password@/api/v1/holds/$reserve_id" => json => $put_data )
220
    $t->patch_ok( "//$userid_3:$password@/api/v1/holds/$reserve_id" => json => $patch_data )
222
      ->status_is(404)
221
      ->status_is(404)
223
      ->json_has('/error');
222
      ->json_has('/error');
224
223
Lines 262-273 subtest "Test endpoints with permission" => sub { Link Here
262
      ->status_is(403)
261
      ->status_is(403)
263
      ->json_like('/error', qr/itemAlreadyOnHold/);
262
      ->json_like('/error', qr/itemAlreadyOnHold/);
264
263
265
    $post_data->{biblionumber} = int($biblio_2->biblionumber);
264
    $post_data->{biblio_id} = $biblio_2->biblionumber;
266
    $post_data->{itemnumber}   = int($item_2->itemnumber);
265
    $post_data->{item_id}   = $item_2->itemnumber;
267
266
268
    $t->post_ok( "//$userid_3:$password@/api/v1/holds" => json => $post_data )
267
    $t->post_ok( "//$userid_3:$password@/api/v1/holds" => json => $post_data )
269
      ->status_is(403)
268
      ->status_is(403)
270
      ->json_like('/error', qr/itemAlreadyOnHold/);
269
      ->json_like('/error', qr/Hold cannot be placed. Reason: tooManyReserves/);
271
270
272
    my $to_delete_patron  = $builder->build_object({ class => 'Koha::Patrons' });
271
    my $to_delete_patron  = $builder->build_object({ class => 'Koha::Patrons' });
273
    my $deleted_patron_id = $to_delete_patron->borrowernumber;
272
    my $deleted_patron_id = $to_delete_patron->borrowernumber;
Lines 326-338 subtest 'test AllowHoldDateInFuture' => sub { Link Here
326
    my $future_hold_date = DateTime->now->add(days => 10)->truncate( to => 'day' );
325
    my $future_hold_date = DateTime->now->add(days => 10)->truncate( to => 'day' );
327
326
328
    my $post_data = {
327
    my $post_data = {
329
        patron_id => int($patron_1->borrowernumber),
328
        patron_id         => $patron_1->borrowernumber,
330
        biblio_id => int($biblio_1->biblionumber),
329
        biblio_id         => $biblio_1->biblionumber,
331
        item_id => int($item_1->itemnumber),
330
        item_id           => $item_1->itemnumber,
332
        pickup_library_id => $branchcode,
331
        pickup_library_id => $branchcode,
333
        expiration_date => output_pref({ dt => $expiration_date, dateformat => 'rfc3339', dateonly => 1 }),
332
        expiration_date   => output_pref( { dt => $expiration_date,  dateformat => 'rfc3339', dateonly => 1 } ),
334
        hold_date => output_pref({ dt => $future_hold_date, dateformat => 'rfc3339', dateonly => 1 }),
333
        hold_date         => output_pref( { dt => $future_hold_date, dateformat => 'rfc3339', dateonly => 1 } ),
335
        priority => 2,
336
    };
334
    };
337
335
338
    t::lib::Mocks::mock_preference( 'AllowHoldDateInFuture', 0 );
336
    t::lib::Mocks::mock_preference( 'AllowHoldDateInFuture', 0 );
Lines 953-962 subtest 'edit() tests' => sub { Link Here
953
        }
951
        }
954
    );
952
    );
955
953
956
    my $biblio_hold_data = $biblio_hold->to_api;
954
    my $biblio_hold_api_data = $biblio_hold->to_api;
957
    $biblio_hold_data->{pickup_library_id} = $library_1->branchcode;
955
    my $biblio_hold_data = {
956
        pickup_library_id => $library_1->branchcode,
957
        priority          => $biblio_hold_api_data->{priority}
958
    };
958
959
959
    $t->put_ok( "//$userid:$password@/api/v1/holds/"
960
    $t->patch_ok( "//$userid:$password@/api/v1/holds/"
960
          . $biblio_hold->id
961
          . $biblio_hold->id
961
          => json => $biblio_hold_data )
962
          => json => $biblio_hold_data )
962
      ->status_is(400)
963
      ->status_is(400)
Lines 965-978 subtest 'edit() tests' => sub { Link Here
965
    $biblio_hold->discard_changes;
966
    $biblio_hold->discard_changes;
966
    is( $biblio_hold->branchcode, $library_3->branchcode, 'branchcode remains untouched' );
967
    is( $biblio_hold->branchcode, $library_3->branchcode, 'branchcode remains untouched' );
967
968
968
    $t->put_ok( "//$userid:$password@/api/v1/holds/" . $biblio_hold->id
969
    $t->patch_ok( "//$userid:$password@/api/v1/holds/" . $biblio_hold->id
969
          => { 'x-koha-override' => 'any' }
970
          => { 'x-koha-override' => 'any' }
970
          => json => $biblio_hold_data )
971
          => json => $biblio_hold_data )
971
      ->status_is(200)
972
      ->status_is(200)
972
      ->json_has( '/pickup_library_id' => $library_1->id );
973
      ->json_has( '/pickup_library_id' => $library_1->id );
973
974
974
    $biblio_hold_data->{pickup_library_id} = $library_2->branchcode;
975
    $biblio_hold_data->{pickup_library_id} = $library_2->branchcode;
975
    $t->put_ok( "//$userid:$password@/api/v1/holds/"
976
    $t->patch_ok( "//$userid:$password@/api/v1/holds/"
976
          . $biblio_hold->id
977
          . $biblio_hold->id
977
          => json => $biblio_hold_data )
978
          => json => $biblio_hold_data )
978
      ->status_is(200);
979
      ->status_is(200);
Lines 993-1002 subtest 'edit() tests' => sub { Link Here
993
        }
994
        }
994
    );
995
    );
995
996
996
    my $item_hold_data = $item_hold->to_api;
997
    my $item_hold_api_data = $item_hold->to_api;
997
    $item_hold_data->{pickup_library_id} = $library_1->branchcode;
998
    my $item_hold_data = {
999
        pickup_library_id => $library_1->branchcode,
1000
        priority          => $item_hold_api_data->{priority}
1001
    };
998
1002
999
    $t->put_ok( "//$userid:$password@/api/v1/holds/"
1003
    $t->patch_ok( "//$userid:$password@/api/v1/holds/"
1000
          . $item_hold->id
1004
          . $item_hold->id
1001
          => json => $item_hold_data )
1005
          => json => $item_hold_data )
1002
      ->status_is(400)
1006
      ->status_is(400)
Lines 1005-1018 subtest 'edit() tests' => sub { Link Here
1005
    $item_hold->discard_changes;
1009
    $item_hold->discard_changes;
1006
    is( $item_hold->branchcode, $library_3->branchcode, 'branchcode remains untouched' );
1010
    is( $item_hold->branchcode, $library_3->branchcode, 'branchcode remains untouched' );
1007
1011
1008
    $t->put_ok( "//$userid:$password@/api/v1/holds/" . $item_hold->id
1012
    $t->patch_ok( "//$userid:$password@/api/v1/holds/" . $item_hold->id
1009
          => { 'x-koha-override' => 'any' }
1013
          => { 'x-koha-override' => 'any' }
1010
          => json => $item_hold_data )
1014
          => json => $item_hold_data )
1011
      ->status_is(200)
1015
      ->status_is(200)
1012
      ->json_has( '/pickup_library_id' => $library_1->id );
1016
      ->json_has( '/pickup_library_id' => $library_1->id );
1013
1017
1014
    $item_hold_data->{pickup_library_id} = $library_2->branchcode;
1018
    $item_hold_data->{pickup_library_id} = $library_2->branchcode;
1015
    $t->put_ok( "//$userid:$password@/api/v1/holds/"
1019
    $t->patch_ok( "//$userid:$password@/api/v1/holds/"
1016
          . $item_hold->id
1020
          . $item_hold->id
1017
          => json => $item_hold_data )
1021
          => json => $item_hold_data )
1018
      ->status_is(200);
1022
      ->status_is(200);
Lines 1098-1107 subtest 'add() tests' => sub { Link Here
1098
        }
1102
        }
1099
    );
1103
    );
1100
1104
1101
    my $biblio_hold_data = $biblio_hold->to_api;
1105
    my $biblio_hold_api_data = $biblio_hold->to_api;
1102
    $biblio_hold->delete;
1106
    $biblio_hold->delete;
1103
    $biblio_hold_data->{pickup_library_id} = $library_1->branchcode;
1107
    my $biblio_hold_data = {
1104
    delete $biblio_hold_data->{hold_id};
1108
        biblio_id         => $biblio_hold_api_data->{biblio_id},
1109
        patron_id         => $biblio_hold_api_data->{patron_id},
1110
        pickup_library_id => $library_1->branchcode,
1111
    };
1105
1112
1106
    $t->post_ok( "//$userid:$password@/api/v1/holds" => json => $biblio_hold_data )
1113
    $t->post_ok( "//$userid:$password@/api/v1/holds" => json => $biblio_hold_data )
1107
      ->status_is(400)
1114
      ->status_is(400)
Lines 1124-1133 subtest 'add() tests' => sub { Link Here
1124
        }
1131
        }
1125
    );
1132
    );
1126
1133
1127
    my $item_hold_data = $item_hold->to_api;
1134
    my $item_hold_api_data = $item_hold->to_api;
1128
    $item_hold->delete;
1135
    $item_hold->delete;
1129
    $item_hold_data->{pickup_library_id} = $library_1->branchcode;
1136
    my $item_hold_data = {
1130
    delete $item_hold->{hold_id};
1137
        biblio_id         => $item_hold_api_data->{biblio_id},
1138
        item_id           => $item_hold_api_data->{item_id},
1139
        patron_id         => $item_hold_api_data->{patron_id},
1140
        pickup_library_id => $library_1->branchcode,
1141
    };
1131
1142
1132
    $t->post_ok( "//$userid:$password@/api/v1/holds" => json => $item_hold_data )
1143
    $t->post_ok( "//$userid:$password@/api/v1/holds" => json => $item_hold_data )
1133
      ->status_is(400)
1144
      ->status_is(400)
1134
- 

Return to bug 28369