From 98ddc10626fbcaec639b4d2d35d26b5873f5de41 Mon Sep 17 00:00:00 2001
From: Aleisha Amohia <aleishaamohia@hotmail.com>
Date: Wed, 20 Oct 2021 17:02:28 +1300
Subject: [PATCH] Bug 24718: Holds API fixes for datetime
---
api/v1/swagger/definitions/hold.json | 4 ++--
api/v1/swagger/paths/holds.json | 6 +++---
t/db_dependent/api/v1/holds.t | 14 ++++++++------
3 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/api/v1/swagger/definitions/hold.json b/api/v1/swagger/definitions/hold.json
index 2fe5b6de96..394d2f671b 100644
--- a/api/v1/swagger/definitions/hold.json
+++ b/api/v1/swagger/definitions/hold.json
@@ -11,7 +11,7 @@
},
"hold_date": {
"type": ["string", "null"],
- "format": "date",
+ "format": "date-time",
"description": "The date the hold was placed"
},
"biblio_id": {
@@ -63,7 +63,7 @@
},
"expiration_date": {
"type": ["string", "null"],
- "format": "date",
+ "format": "date-time",
"description": "The date the hold expires"
},
"lowest_priority": {
diff --git a/api/v1/swagger/paths/holds.json b/api/v1/swagger/paths/holds.json
index ea5245a08e..aecb20c8e1 100644
--- a/api/v1/swagger/paths/holds.json
+++ b/api/v1/swagger/paths/holds.json
@@ -23,7 +23,7 @@
"in": "query",
"description": "Hold",
"type": "string",
- "format": "date"
+ "format": "date-time"
},
{
"name": "biblio_id",
@@ -202,7 +202,7 @@
"hold_date": {
"description": "The date the hold was placed",
"type": [ "string", "null" ],
- "format": "date"
+ "format": "date-time"
},
"item_id": {
"description": "Internal item identifier",
@@ -215,7 +215,7 @@
"expiration_date": {
"description": "Hold end date",
"type": ["string", "null"],
- "format": "date"
+ "format": "date-time"
},
"notes": {
"description": "Notes related to this hold",
diff --git a/t/db_dependent/api/v1/holds.t b/t/db_dependent/api/v1/holds.t
index ac18877272..4f534c9d4c 100755
--- a/t/db_dependent/api/v1/holds.t
+++ b/t/db_dependent/api/v1/holds.t
@@ -159,7 +159,7 @@ my $post_data = {
biblio_id => $biblio_1->biblionumber,
item_id => $item_1->itemnumber,
pickup_library_id => $branchcode,
- expiration_date => output_pref( { dt => $expiration_date, dateformat => 'rfc3339', dateonly => 1 } ),
+ expiration_date => output_pref( { dt => $expiration_date, dateformat => 'rfc3339' } ),
};
my $patch_data = {
priority => 2,
@@ -254,7 +254,7 @@ subtest "Test endpoints with permission" => sub {
$t->get_ok( "//$userid_1:$password@/api/v1/holds?patron_id=" . $patron_1->borrowernumber )
->status_is(200)
->json_is('/0/hold_id', $reserve_id)
- ->json_is('/0/expiration_date', output_pref({ dt => $expiration_date, dateformat => 'rfc3339', dateonly => 1 }))
+ ->json_is('/0/expiration_date', output_pref({ dt => $expiration_date, dateformat => 'rfc3339' }))
->json_is('/0/pickup_library_id', $branchcode);
$t->post_ok( "//$userid_3:$password@/api/v1/holds" => json => $post_data )
@@ -322,15 +322,15 @@ subtest 'test AllowHoldDateInFuture' => sub {
$dbh->do('DELETE FROM reserves');
- my $future_hold_date = DateTime->now->add(days => 10)->truncate( to => 'day' );
+ my $future_hold_date = DateTime->now->add(days => 10);
my $post_data = {
patron_id => $patron_1->borrowernumber,
biblio_id => $biblio_1->biblionumber,
item_id => $item_1->itemnumber,
pickup_library_id => $branchcode,
- expiration_date => output_pref( { dt => $expiration_date, dateformat => 'rfc3339', dateonly => 1 } ),
- hold_date => output_pref( { dt => $future_hold_date, dateformat => 'rfc3339', dateonly => 1 } ),
+ expiration_date => output_pref( { dt => $expiration_date, dateformat => 'rfc3339' } ),
+ hold_date => output_pref( { dt => $future_hold_date, dateformat => 'rfc3339' } ),
};
t::lib::Mocks::mock_preference( 'AllowHoldDateInFuture', 0 );
@@ -340,6 +340,8 @@ subtest 'test AllowHoldDateInFuture' => sub {
->json_has('/error');
t::lib::Mocks::mock_preference( 'AllowHoldDateInFuture', 1 );
+ t::lib::Mocks::mock_preference( 'HourBasedHolds', 1 );
+ t::lib::Mocks::mock_preference( 'dateformat', 'rfc3339' );
# Make sure pickup location checks doesn't get in the middle
my $mock_biblio = Test::MockModule->new('Koha::Biblio');
@@ -349,7 +351,7 @@ subtest 'test AllowHoldDateInFuture' => sub {
$t->post_ok( "//$userid_3:$password@/api/v1/holds" => json => $post_data )
->status_is(201)
- ->json_is('/hold_date', output_pref({ dt => $future_hold_date, dateformat => 'rfc3339', dateonly => 1 }));
+ ->json_is('/hold_date', output_pref({ dt => $future_hold_date, dateformat => 'rfc3339' }));
};
$schema->storage->txn_rollback;
--
2.11.0