Skip to content

Commit 76705e4

Browse files
HMAI-385 - Empty non associations should not result in an error (#780)
* Remove empty list 404 * Tidy up tests
1 parent 490a11c commit 76705e4

File tree

2 files changed

+10
-19
lines changed

2 files changed

+10
-19
lines changed

src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetPrisonersNonAssociationsService.kt

+1-9
Original file line numberDiff line numberDiff line change
@@ -23,26 +23,18 @@ class GetPrisonersNonAssociationsService(
2323
filters: ConsumerFilters?,
2424
): Response<NonAssociations?> {
2525
val consumerPrisonFilterCheck = consumerPrisonAccessService.checkConsumerHasPrisonAccess<NonAssociations?>(prisonId, filters, upstreamServiceType = UpstreamApi.NON_ASSOCIATIONS)
26-
2726
if (consumerPrisonFilterCheck.errors.isNotEmpty()) {
2827
return consumerPrisonFilterCheck
2928
}
3029

3130
val responseFromNonAssociationsGateway = nonAssociationsGateway.getNonAssociationsForPerson(hmppsId, includeOpen, includeClosed)
32-
3331
if (responseFromNonAssociationsGateway.errors.isNotEmpty()) {
3432
return Response(data = null, responseFromNonAssociationsGateway.errors)
3533
}
3634
if (responseFromNonAssociationsGateway.data?.nonAssociations == null) {
3735
return Response(data = null, errors = listOf(UpstreamApiError(UpstreamApi.NON_ASSOCIATIONS, UpstreamApiError.Type.ENTITY_NOT_FOUND, "No non associates found with prisoner")))
3836
}
3937

40-
val unpackedResponse = NonAssociations(responseFromNonAssociationsGateway.data.nonAssociations ?: emptyList())
41-
42-
if (unpackedResponse.nonAssociations.isEmpty()) {
43-
return Response(data = null, errors = listOf(UpstreamApiError(UpstreamApi.NON_ASSOCIATIONS, UpstreamApiError.Type.ENTITY_NOT_FOUND, "Not found")))
44-
}
45-
46-
return Response(data = unpackedResponse)
38+
return Response(data = NonAssociations(responseFromNonAssociationsGateway.data.nonAssociations))
4739
}
4840
}

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

+9-10
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ internal class GetPrisonersNonAssociationsServiceTest(
2929
) : DescribeSpec(
3030
{
3131
val prisonId = "MDI"
32+
val prisonerNumber = "ABC1234"
33+
val filters = null
3234
val nonAssociations =
3335
NonAssociations(
3436
nonAssociations =
@@ -51,7 +53,7 @@ internal class GetPrisonersNonAssociationsServiceTest(
5153
closedAt = "Bad Dudes",
5254
otherPrisonerDetails =
5355
NonAssociationPrisonerDetails(
54-
prisonerNumber = "ABC1234",
56+
prisonerNumber = prisonerNumber,
5557
role = "Bad Dudes",
5658
roleDescription = "Bad Dudes",
5759
firstName = "Bad Dudes",
@@ -72,16 +74,15 @@ internal class GetPrisonersNonAssociationsServiceTest(
7274
whenever(
7375
consumerPrisonAccessService.checkConsumerHasPrisonAccess<NonAssociations?>(
7476
prisonId,
75-
filters = ConsumerFilters(null),
77+
filters,
7678
upstreamServiceType = UpstreamApi.NON_ASSOCIATIONS,
7779
),
7880
).thenReturn(Response(data = null, errors = emptyList()))
81+
whenever(nonAssociationsGateway.getNonAssociationsForPerson(prisonerNumber)).thenReturn(Response(data = nonAssociations))
7982
}
8083

8184
it("returns a valid response when provided a valid prisoner number") {
82-
whenever(nonAssociationsGateway.getNonAssociationsForPerson(prisonerNumber = "ABC1234")).thenReturn(Response(data = nonAssociations))
83-
84-
val response = getPrisonersNonAssociationsService.execute("ABC1234", prisonId, filters = ConsumerFilters(null))
85+
val response = getPrisonersNonAssociationsService.execute(prisonerNumber, prisonId, filters = filters)
8586
response.errors.shouldBeEmpty()
8687
response.data.shouldBe(nonAssociations)
8788
}
@@ -97,12 +98,11 @@ internal class GetPrisonersNonAssociationsServiceTest(
9798
),
9899
)
99100

100-
whenever(nonAssociationsGateway.getNonAssociationsForPerson(prisonerNumber = "ABC1234")).thenReturn(Response(data = null))
101101
whenever(consumerPrisonAccessService.checkConsumerHasPrisonAccess<NonAssociations?>(wrongPrisonId, ConsumerFilters(listOf("MDI")), upstreamServiceType = UpstreamApi.NON_ASSOCIATIONS)).thenReturn(
102102
Response(data = null, errors = errors),
103103
)
104104

105-
val response = getPrisonersNonAssociationsService.execute("ABC1234", wrongPrisonId, filters = ConsumerFilters(listOf("MDI")))
105+
val response = getPrisonersNonAssociationsService.execute(prisonerNumber, wrongPrisonId, filters = ConsumerFilters(listOf("MDI")))
106106
response.errors.shouldBe(errors)
107107
response.data.shouldBe(null)
108108
}
@@ -116,10 +116,9 @@ internal class GetPrisonersNonAssociationsServiceTest(
116116
description = "Not found",
117117
),
118118
)
119+
whenever(nonAssociationsGateway.getNonAssociationsForPerson(prisonerNumber)).thenReturn(Response(data = null, errors = errors))
119120

120-
whenever(nonAssociationsGateway.getNonAssociationsForPerson(prisonerNumber = "ABC1234")).thenReturn(Response(data = null, errors = errors))
121-
122-
val response = getPrisonersNonAssociationsService.execute("ABC1234", prisonId, filters = ConsumerFilters(null))
121+
val response = getPrisonersNonAssociationsService.execute(prisonerNumber, prisonId, filters = filters)
123122
response.errors.shouldBe(errors)
124123
response.data.shouldBe(null)
125124
}

0 commit comments

Comments
 (0)