Skip to content

Commit b04e54e

Browse files
Gateway changes and modifications across other related tests
1 parent 15e18d2 commit b04e54e

File tree

10 files changed

+107
-4
lines changed

10 files changed

+107
-4
lines changed

src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/NDeliusGateway.kt

+24
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Offence
1212
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Response
1313
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Sentence
1414
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi
15+
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.DynamicRisk
1516
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.ndelius.NDeliusSupervisions
1617

1718
@Component
@@ -69,6 +70,29 @@ class NDeliusGateway(
6970
}
7071
}
7172

73+
fun getDynamicRisksForPerson(id: String): Response<List<DynamicRisk>> {
74+
val result =
75+
webClient.request<NDeliusSupervisions>(
76+
HttpMethod.GET,
77+
"/case/$id/supervisions",
78+
authenticationHeader(),
79+
UpstreamApi.NDELIUS,
80+
)
81+
82+
return when (result) {
83+
is WebClientWrapperResponse.Success -> {
84+
Response(data = result.data.dynamicRisks.map { it.toDynamicRisk() })
85+
}
86+
87+
is WebClientWrapperResponse.Error -> {
88+
Response(
89+
data = emptyList(),
90+
errors = result.errors,
91+
)
92+
}
93+
}
94+
}
95+
7296
fun getMappaDetailForPerson(id: String): Response<MappaDetail?> {
7397
val result =
7498
webClient.request<NDeliusSupervisions>(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps
2+
3+
data class DynamicRisk(
4+
val code: String? = null,
5+
val description: String? = null,
6+
val startDate: String? = null,
7+
val reviewDate: String? = null,
8+
val notes: String? = null,
9+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.ndelius
2+
3+
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.DynamicRisk
4+
5+
data class NDeliusDynamicRisk(
6+
val code: String? = null,
7+
val description: String? = null,
8+
val startDate: String? = null,
9+
val reviewDate: String? = null,
10+
val notes: String? = null,
11+
) {
12+
fun toDynamicRisk(): DynamicRisk =
13+
DynamicRisk(
14+
code = this.code,
15+
description = this.description,
16+
startDate = this.startDate,
17+
reviewDate = this.reviewDate,
18+
notes = this.notes,
19+
)
20+
}

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

+1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ data class NDeliusSupervisions(
44
val communityManager: NDeliusCommunityManager,
55
val mappaDetail: NDeliusMappaDetail? = null,
66
val supervisions: List<NDeliusSupervision>,
7+
val dynamicRisks: List<NDeliusDynamicRisk>,
78
)

src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetCommunityOffenderManagerForPersonTest.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@ class GetCommunityOffenderManagerForPersonTest(
8686
{
8787
"communityManager": {},
8888
"mappaDetail": {},
89-
"supervisions": []
89+
"supervisions": [],
90+
"dynamicRisks": []
9091
}
9192
""",
9293
)

src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetMappaDetailForPersonTest.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ class GetMappaDetailForPersonTest(
8181
{
8282
"communityManager": {},
8383
"mappaDetail": {},
84-
"supervisions": []
84+
"supervisions": [],
85+
"dynamicRisks": []
8586
}
8687
""",
8788
)

src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetOffencesForPersonTest.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,9 @@ class GetOffencesForPersonTest(
146146
{
147147
"communityManager": {},
148148
"mappaDetail": null,
149-
"supervisions": [] }
149+
"supervisions": [],
150+
"dynamicRisks": []
151+
}
150152
""",
151153
)
152154

src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/GetSentencesForPersonTest.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,9 @@ class GetSentencesForPersonTest(
106106
{
107107
"communityManager": {},
108108
"mappaDetail": {},
109-
"supervisions": [] }
109+
"supervisions": [],
110+
"dynamicRisks": []
111+
}
110112
""",
111113
)
112114

src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/ndelius/fixtures/GetSupervisionsResponse.json

+9
Original file line numberDiff line numberDiff line change
@@ -150,5 +150,14 @@
150150
}
151151
]
152152
}
153+
],
154+
"dynamicRisks": [
155+
{
156+
"code": "ABC",
157+
"description": "Child protection issues",
158+
"startDate": "2018-07-27",
159+
"reviewDate": "2026-03-20",
160+
"notes": "These notes are about the person."
161+
}
153162
]
154163
}

src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/ndelius/SupervisionsTest.kt

+34
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import io.kotest.core.spec.style.DescribeSpec
44
import io.kotest.matchers.shouldBe
55
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.helpers.generateTestSentence
66
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Offence
7+
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.DynamicRisk
78
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Sentence
89
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.SentenceLength
910
import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.SystemSource
@@ -40,6 +41,7 @@ class SupervisionsTest : DescribeSpec(
4041
courtAppearances = listOf(NDeliusCourtAppearance(date = "2010-07-07T00:00:00+01:00", court = "London Magistrates Court")),
4142
),
4243
),
44+
dynamicRisks = listOf(NDeliusDynamicRisk())
4345
)
4446

4547
val integrationApiOffences = supervisions.supervisions.flatMap { it.toOffences() }
@@ -99,6 +101,7 @@ class SupervisionsTest : DescribeSpec(
99101
courtAppearances = listOf(NDeliusCourtAppearance(date = "2009-07-07T00:00:00+01:00", court = "London Magistrates Court")),
100102
),
101103
),
104+
dynamicRisks = listOf(NDeliusDynamicRisk())
102105
)
103106

104107
val integrationApiOffences = supervisions.supervisions.flatMap { it.toOffences() }
@@ -144,6 +147,7 @@ class SupervisionsTest : DescribeSpec(
144147
courtAppearances = listOf(NDeliusCourtAppearance(date = "2009-07-07T00:00:00+01:00", court = "London Magistrates Court")),
145148
),
146149
),
150+
dynamicRisks = listOf(NDeliusDynamicRisk())
147151
)
148152

149153
val integrationApiOffences = supervisions.supervisions.flatMap { it.toOffences() }
@@ -194,6 +198,7 @@ class SupervisionsTest : DescribeSpec(
194198
courtAppearances = listOf(NDeliusCourtAppearance(date = "2010-07-07T00:00:00+01:00", court = "London Magistrates Court")),
195199
),
196200
),
201+
dynamicRisks = listOf(NDeliusDynamicRisk())
197202
)
198203

199204
val integrationApiOffences = supervisions.supervisions.flatMap { it.toOffences() }
@@ -253,6 +258,7 @@ class SupervisionsTest : DescribeSpec(
253258
),
254259
),
255260
),
261+
dynamicRisks = listOf(NDeliusDynamicRisk())
256262
)
257263

258264
val integrationApiSentences = supervisions.supervisions.map { it.toSentence() }
@@ -296,6 +302,7 @@ class SupervisionsTest : DescribeSpec(
296302
listOf(
297303
NDeliusSupervision(custodial = true),
298304
),
305+
dynamicRisks = listOf(NDeliusDynamicRisk())
299306
)
300307

301308
supervisions.supervisions.first().toSentence().shouldBe(
@@ -316,5 +323,32 @@ class SupervisionsTest : DescribeSpec(
316323
)
317324
}
318325
}
326+
describe("#toDynamicRisk"){
327+
it("returns dynamic risk when present") {
328+
val supervisions =
329+
NDeliusSupervisions(
330+
communityManager = NDeliusCommunityManager(),
331+
mappaDetail = NDeliusMappaDetail(),
332+
listOf(NDeliusSupervision(custodial = true)),
333+
dynamicRisks = listOf(NDeliusDynamicRisk(
334+
code = "ABC",
335+
description = "Child Concerns",
336+
startDate = "2020-01-02",
337+
reviewDate = "2025-04-04",
338+
notes = "To review in April."
339+
))
340+
)
341+
342+
supervisions.dynamicRisks.first().toDynamicRisk().shouldBe(
343+
DynamicRisk(
344+
code = "ABC",
345+
description = "Child Concerns",
346+
startDate = "2020-01-02",
347+
reviewDate = "2025-04-04",
348+
notes = "To review in April."
349+
)
350+
)
351+
}
352+
}
319353
},
320354
)

0 commit comments

Comments
 (0)