Skip to content

Commit f9c068c

Browse files
authored
Hia 759 fix latest key dates and adjustments pnd queries (#451)
* Update openApi spec * Implement JsonInclude for SentencekeyDate
1 parent 5b51b76 commit f9c068c

File tree

6 files changed

+120
-125
lines changed

6 files changed

+120
-125
lines changed

openapi.yml

+19-6
Original file line numberDiff line numberDiff line change
@@ -1659,21 +1659,21 @@ components:
16591659
dtoPostRecallRelease:
16601660
$ref: "#/components/schemas/SentenceKeyDate"
16611661
earlyTerm:
1662-
$ref: "#/components/schemas/SentenceKeyDate"
1662+
$ref: "#/components/schemas/SentenceKeyDateWithCalculatedDate"
16631663
homeDetentionCurfew:
16641664
$ref: "#/components/schemas/HomeDetentionCurfewDate"
16651665
lateTerm:
1666-
$ref: "#/components/schemas/SentenceKeyDate"
1666+
$ref: "#/components/schemas/SentenceKeyDateWithCalculatedDate"
16671667
licenceExpiry:
1668-
$ref: "#/components/schemas/SentenceKeyDate"
1668+
$ref: "#/components/schemas/SentenceKeyDateWithCalculatedDate"
16691669
midTerm:
1670-
$ref: "#/components/schemas/SentenceKeyDate"
1670+
$ref: "#/components/schemas/SentenceKeyDateWithCalculatedDate"
16711671
nonDto:
16721672
$ref: "#/components/schemas/NonDtoDate"
16731673
nonParole:
16741674
$ref: "#/components/schemas/SentenceKeyDate"
16751675
paroleEligibility:
1676-
$ref: "#/components/schemas/SentenceKeyDate"
1676+
$ref: "#/components/schemas/SentenceKeyDateWithCalculatedDate"
16771677
postRecallRelease:
16781678
$ref: "#/components/schemas/SentenceKeyDate"
16791679
release:
@@ -2256,7 +2256,7 @@ components:
22562256
type: integer
22572257
example: 13
22582258
description: Number of tagged bail days
2259-
SentenceKeyDate:
2259+
SentenceKeyDateWithCalculatedDate:
22602260
type: object
22612261
properties:
22622262
date:
@@ -2274,6 +2274,19 @@ components:
22742274
format: date
22752275
example: 2023-03-01
22762276
description: release calculated date for offender
2277+
SentenceKeyDate:
2278+
type: object
2279+
properties:
2280+
date:
2281+
type: string
2282+
format: date
2283+
example: 2023-03-01
2284+
description: release date for offender
2285+
overrideDate:
2286+
type: string
2287+
format: date
2288+
example: 2023-03-01
2289+
description: release override date for offender
22772290
HomeDetentionCurfewDate:
22782291
type: object
22792292
properties:

src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/hmpps/SentenceKeyDate.kt

+2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps
22

3+
import com.fasterxml.jackson.annotation.JsonInclude
34
import java.time.LocalDate
45

6+
@JsonInclude(JsonInclude.Include.NON_NULL)
57
data class SentenceKeyDate(
68
val date: LocalDate? = null,
79
val overrideDate: LocalDate? = null,

src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/sentences/LatestSentenceKeyDatesAndAdjustmentsControllerTest.kt

+94-99
Original file line numberDiff line numberDiff line change
@@ -157,106 +157,101 @@ internal class LatestSentenceKeyDatesAndAdjustmentsControllerTest(
157157

158158
result.response.contentAsString.shouldContain(
159159
"""
160-
{
161-
"data": {
162-
"adjustments": {
163-
"additionalDaysAwarded": 7,
164-
"unlawfullyAtLarge": 10,
165-
"lawfullyAtLarge": 2,
166-
"restoredAdditionalDaysAwarded": 0,
167-
"specialRemission": 11,
168-
"recallSentenceRemand": 1,
169-
"recallSentenceTaggedBail": 3,
170-
"remand": 6,
171-
"taggedBail": 3,
172-
"unusedRemand": 6
173-
},
174-
"automaticRelease": {
175-
"date": "2023-04-01",
176-
"overrideDate": "2023-04-01",
177-
"calculatedDate": null
178-
},
179-
"conditionalRelease": {
180-
"date": "2023-05-01",
181-
"overrideDate": "2023-05-01",
182-
"calculatedDate": null
183-
},
184-
"dtoPostRecallRelease": {
185-
"date": "2024-01-02",
186-
"overrideDate": "2024-01-02",
187-
"calculatedDate": null
188-
},
189-
"earlyTerm": {
190-
"date": "2021-11-02",
191-
"overrideDate": "2021-11-02",
192-
"calculatedDate": "2021-11-02"
193-
},
194-
"homeDetentionCurfew": {
195-
"actualDate": "2022-04-01",
196-
"eligibilityCalculatedDate": "2022-04-01",
197-
"eligibilityDate": "2022-04-01",
198-
"eligibilityOverrideDate": "2022-04-01",
199-
"endDate": "2022-04-01"
200-
},
201-
"lateTerm": {
202-
"date": "2022-01-01",
203-
"overrideDate": "2022-01-01",
204-
"calculatedDate": "2022-01-01"
205-
},
206-
"licenceExpiry": {
207-
"date": "2025-02-01",
208-
"overrideDate": "2025-02-01",
209-
"calculatedDate": "2025-02-01"
210-
},
211-
"midTerm": {
212-
"date": "2024-02-01",
213-
"overrideDate": "2024-02-01",
214-
"calculatedDate": "2024-02-01"
215-
},
216-
"nonDto": {
217-
"date": "2024-02-01",
218-
"releaseDateType": "CRD"
219-
},
220-
"nonParole": {
221-
"date": "2026-11-02",
222-
"overrideDate": "2026-11-02",
223-
"calculatedDate": null
224-
},
225-
"paroleEligibility": {
226-
"date": "2027-02-01",
227-
"overrideDate": "2027-02-01",
228-
"calculatedDate": "2027-02-01"
229-
},
230-
"postRecallRelease": {
231-
"date": "2028-02-01",
232-
"overrideDate": "2028-02-01",
233-
"calculatedDate": null
234-
},
235-
"release": {
236-
"date": "2030-02-01",
237-
"confirmedDate": "2030-02-01"
238-
},
239-
"sentence": {
240-
"effectiveEndDate": "2025-02-01",
241-
"expiryCalculatedDate": "2025-02-01",
242-
"expiryDate": "2025-02-01",
243-
"expiryOverrideDate": "2025-02-01",
244-
"startDate": "2025-02-01"
245-
},
246-
"topupSupervision": {
247-
"expiryCalculatedDate": "2022-04-01",
248-
"expiryDate": "2022-04-01",
249-
"expiryOverrideDate": "2022-04-01",
250-
"startDate": "2022-04-01"
251-
},
252-
"actualParoleDate": "2031-02-01",
253-
"earlyRemovalSchemeEligibilityDate": "2031-02-01",
254-
"releaseOnTemporaryLicenceDate": "2031-02-01",
255-
"tariffDate": "2031-02-01",
256-
"tariffEarlyRemovalSchemeEligibilityDate": "2031-02-01"
160+
{
161+
"data": {
162+
"adjustments": {
163+
"additionalDaysAwarded": 7,
164+
"unlawfullyAtLarge": 10,
165+
"lawfullyAtLarge": 2,
166+
"restoredAdditionalDaysAwarded": 0,
167+
"specialRemission": 11,
168+
"recallSentenceRemand": 1,
169+
"recallSentenceTaggedBail": 3,
170+
"remand": 6,
171+
"taggedBail": 3,
172+
"unusedRemand": 6
173+
},
174+
"automaticRelease": {
175+
"date": "2023-04-01",
176+
"overrideDate": "2023-04-01"
177+
},
178+
"conditionalRelease": {
179+
"date": "2023-05-01",
180+
"overrideDate": "2023-05-01"
181+
},
182+
"dtoPostRecallRelease": {
183+
"date": "2024-01-02",
184+
"overrideDate": "2024-01-02"
185+
},
186+
"earlyTerm": {
187+
"date": "2021-11-02",
188+
"overrideDate": "2021-11-02",
189+
"calculatedDate": "2021-11-02"
190+
},
191+
"homeDetentionCurfew": {
192+
"actualDate": "2022-04-01",
193+
"eligibilityCalculatedDate": "2022-04-01",
194+
"eligibilityDate": "2022-04-01",
195+
"eligibilityOverrideDate": "2022-04-01",
196+
"endDate": "2022-04-01"
197+
},
198+
"lateTerm": {
199+
"date": "2022-01-01",
200+
"overrideDate": "2022-01-01",
201+
"calculatedDate": "2022-01-01"
202+
},
203+
"licenceExpiry": {
204+
"date": "2025-02-01",
205+
"overrideDate": "2025-02-01",
206+
"calculatedDate": "2025-02-01"
207+
},
208+
"midTerm": {
209+
"date": "2024-02-01",
210+
"overrideDate": "2024-02-01",
211+
"calculatedDate": "2024-02-01"
212+
},
213+
"nonDto": {
214+
"date": "2024-02-01",
215+
"releaseDateType": "CRD"
216+
},
217+
"nonParole": {
218+
"date": "2026-11-02",
219+
"overrideDate": "2026-11-02"
220+
},
221+
"paroleEligibility": {
222+
"date": "2027-02-01",
223+
"overrideDate": "2027-02-01",
224+
"calculatedDate": "2027-02-01"
225+
},
226+
"postRecallRelease": {
227+
"date": "2028-02-01",
228+
"overrideDate": "2028-02-01"
229+
},
230+
"release": {
231+
"date": "2030-02-01",
232+
"confirmedDate": "2030-02-01"
233+
},
234+
"sentence": {
235+
"effectiveEndDate": "2025-02-01",
236+
"expiryCalculatedDate": "2025-02-01",
237+
"expiryDate": "2025-02-01",
238+
"expiryOverrideDate": "2025-02-01",
239+
"startDate": "2025-02-01"
240+
},
241+
"topupSupervision": {
242+
"expiryCalculatedDate": "2022-04-01",
243+
"expiryDate": "2022-04-01",
244+
"expiryOverrideDate": "2022-04-01",
245+
"startDate": "2022-04-01"
246+
},
247+
"actualParoleDate": "2031-02-01",
248+
"earlyRemovalSchemeEligibilityDate": "2031-02-01",
249+
"releaseOnTemporaryLicenceDate": "2031-02-01",
250+
"tariffDate": "2031-02-01",
251+
"tariffEarlyRemovalSchemeEligibilityDate": "2031-02-01"
252+
}
257253
}
258-
}
259-
""".removeWhitespaceAndNewlines(),
254+
""".removeWhitespaceAndNewlines(),
260255
)
261256
}
262257

src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/nomis/GetLatestSentenceKeyDatesForPersonTest.kt

-5
Original file line numberDiff line numberDiff line change
@@ -111,15 +111,12 @@ class GetLatestSentenceKeyDatesForPersonTest(
111111

112112
response.data?.automaticRelease?.date.shouldBe(LocalDate.parse("2023-03-01"))
113113
response.data?.automaticRelease?.overrideDate.shouldBe(LocalDate.parse("2023-03-01"))
114-
response.data?.automaticRelease?.calculatedDate.shouldBe(null)
115114

116115
response.data?.conditionalRelease?.date.shouldBe(LocalDate.parse("2023-04-01"))
117116
response.data?.conditionalRelease?.overrideDate.shouldBe(LocalDate.parse("2023-04-01"))
118-
response.data?.conditionalRelease?.calculatedDate.shouldBe(null)
119117

120118
response.data?.dtoPostRecallRelease?.date.shouldBe(LocalDate.parse("2023-05-01"))
121119
response.data?.dtoPostRecallRelease?.overrideDate.shouldBe(LocalDate.parse("2023-05-01"))
122-
response.data?.dtoPostRecallRelease?.calculatedDate.shouldBe(null)
123120

124121
response.data?.earlyTerm?.date.shouldBe(LocalDate.parse("2021-04-01"))
125122
response.data?.earlyTerm?.overrideDate.shouldBe(LocalDate.parse("2021-04-01"))
@@ -148,15 +145,13 @@ class GetLatestSentenceKeyDatesForPersonTest(
148145

149146
response.data?.nonParole?.date.shouldBe(LocalDate.parse("2026-02-01"))
150147
response.data?.nonParole?.overrideDate.shouldBe(LocalDate.parse("2026-02-01"))
151-
response.data?.nonParole?.calculatedDate.shouldBe(null)
152148

153149
response.data?.paroleEligibility?.date.shouldBe(LocalDate.parse("2027-02-01"))
154150
response.data?.paroleEligibility?.overrideDate.shouldBe(LocalDate.parse("2027-02-01"))
155151
response.data?.paroleEligibility?.calculatedDate.shouldBe(LocalDate.parse("2027-02-01"))
156152

157153
response.data?.postRecallRelease?.date.shouldBe(LocalDate.parse("2028-02-01"))
158154
response.data?.postRecallRelease?.overrideDate.shouldBe(LocalDate.parse("2028-02-01"))
159-
response.data?.postRecallRelease?.calculatedDate.shouldBe(null)
160155

161156
response.data?.release?.date.shouldBe(LocalDate.parse("2030-02-01"))
162157
response.data?.release?.confirmedDate.shouldBe(LocalDate.parse("2030-02-01"))

src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetLatestSentenceKeyDatesAndAdjustmentsForPersonServiceTest.kt

-5
Original file line numberDiff line numberDiff line change
@@ -179,15 +179,12 @@ internal class GetLatestSentenceKeyDatesAndAdjustmentsForPersonServiceTest(
179179

180180
response.data?.automaticRelease?.date.shouldBe(LocalDate.parse("2023-11-02"))
181181
response.data?.automaticRelease?.overrideDate.shouldBe(LocalDate.parse("2023-11-02"))
182-
response.data?.automaticRelease?.calculatedDate.shouldBe(null)
183182

184183
response.data?.conditionalRelease?.date.shouldBe(LocalDate.parse("2023-12-02"))
185184
response.data?.conditionalRelease?.overrideDate.shouldBe(LocalDate.parse("2023-12-02"))
186-
response.data?.conditionalRelease?.calculatedDate.shouldBe(null)
187185

188186
response.data?.dtoPostRecallRelease?.date.shouldBe(LocalDate.parse("2024-01-02"))
189187
response.data?.dtoPostRecallRelease?.overrideDate.shouldBe(LocalDate.parse("2024-01-02"))
190-
response.data?.dtoPostRecallRelease?.calculatedDate.shouldBe(null)
191188

192189
response.data?.earlyTerm?.date.shouldBe(LocalDate.parse("2021-11-02"))
193190
response.data?.earlyTerm?.overrideDate.shouldBe(LocalDate.parse("2021-11-02"))
@@ -216,15 +213,13 @@ internal class GetLatestSentenceKeyDatesAndAdjustmentsForPersonServiceTest(
216213

217214
response.data?.nonParole?.date.shouldBe(LocalDate.parse("2026-11-02"))
218215
response.data?.nonParole?.overrideDate.shouldBe(LocalDate.parse("2026-11-02"))
219-
response.data?.nonParole?.calculatedDate.shouldBe(null)
220216

221217
response.data?.paroleEligibility?.date.shouldBe(LocalDate.parse("2027-02-01"))
222218
response.data?.paroleEligibility?.overrideDate.shouldBe(LocalDate.parse("2027-02-01"))
223219
response.data?.paroleEligibility?.calculatedDate.shouldBe(LocalDate.parse("2027-02-01"))
224220

225221
response.data?.postRecallRelease?.date.shouldBe(LocalDate.parse("2028-02-01"))
226222
response.data?.postRecallRelease?.overrideDate.shouldBe(LocalDate.parse("2028-02-01"))
227-
response.data?.postRecallRelease?.calculatedDate.shouldBe(null)
228223

229224
response.data?.release?.date.shouldBe(LocalDate.parse("2030-02-01"))
230225
response.data?.release?.confirmedDate.shouldBe(LocalDate.parse("2030-02-01"))

src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/smoke/person/SentencesSmokeTest.kt

+5-10
Original file line numberDiff line numberDiff line change
@@ -97,18 +97,15 @@ class SentencesSmokeTest : DescribeSpec(
9797
},
9898
"automaticRelease": {
9999
"date": "2020-02-03",
100-
"overrideDate": "2020-02-03",
101-
"calculatedDate": null
100+
"overrideDate": "2020-02-03"
102101
},
103102
"conditionalRelease": {
104103
"date": "2020-02-03",
105-
"overrideDate": "2020-02-03",
106-
"calculatedDate": null
104+
"overrideDate": "2020-02-03"
107105
},
108106
"dtoPostRecallRelease": {
109107
"date": "2020-02-03",
110-
"overrideDate": "2020-04-01",
111-
"calculatedDate": null
108+
"overrideDate": "2020-04-01"
112109
},
113110
"earlyTerm": {
114111
"date": "2020-02-03",
@@ -143,8 +140,7 @@ class SentencesSmokeTest : DescribeSpec(
143140
},
144141
"nonParole": {
145142
"date": "2020-02-03",
146-
"overrideDate": "2020-02-03",
147-
"calculatedDate": null
143+
"overrideDate": "2020-02-03"
148144
},
149145
"paroleEligibility": {
150146
"date": "2020-02-03",
@@ -153,8 +149,7 @@ class SentencesSmokeTest : DescribeSpec(
153149
},
154150
"postRecallRelease": {
155151
"date": "2020-02-03",
156-
"overrideDate": "2020-04-01",
157-
"calculatedDate": null
152+
"overrideDate": "2020-04-01"
158153
},
159154
"release": {
160155
"date": "2020-04-01",

0 commit comments

Comments
 (0)