SAA-4082: Replace prison api locations group endpoint#2020
Conversation
There was a problem hiding this comment.
Pull request overview
This PR migrates “location groups” retrieval off the deprecated Prison API endpoint onto the Locations Inside Prison API, updating the client/service layer and moving corresponding WireMock stubs and fixtures.
Changes:
- Removed
getLocationGroups()fromPrisonApiClientand introduced a newgetLocationGroups()inLocationsInsidePrisonAPIClientusing/locations/prison/{prisonCode}/groups. - Replaced the default location-group service implementation from Prison API to Locations Inside Prison API.
- Updated WireMock servers/fixtures and adjusted unit/integration tests accordingly.
Reviewed changes
Copilot reviewed 13 out of 16 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/main/kotlin/.../client/prisonapi/api/PrisonApiClient.kt | Removes deprecated Prison API location-groups call. |
| src/main/kotlin/.../client/locationsinsideprison/api/LocationsInsidePrisonAPIClient.kt | Adds Locations Inside Prison API location-groups call. |
| src/main/kotlin/.../service/LocationGroupFromPrisonApiService.kt | Removes old default service that called Prison API. |
| src/main/kotlin/.../service/LocationGroupFromLocationsInsidePrisonApiService.kt | Adds new default service that calls Locations Inside Prison API. |
| src/main/kotlin/.../service/LocationGroupService.kt | Renames parameters to prisonCode for clarity/consistency. |
| src/main/kotlin/.../service/LocationGroupServiceSelector.kt | Routes selection using prisonCode terminology. |
| src/main/kotlin/.../service/LocationGroupFromPropertiesService.kt | Updates parameter names, but leaves some agencyId terminology in docs/messages. |
| src/test/kotlin/.../integration/wiremock/PrisonApiMockServer.kt | Removes location-groups stubs from Prison API mock. |
| src/test/kotlin/.../integration/wiremock/LocationsInsidePrisonApiMockServer.kt | Adds location-groups stubs for Locations Inside Prison API mock. |
| src/test/resources/__files/locationsinsideprisonapi/*.json | Adds new WireMock fixtures for location-groups responses/errors. |
| src/test/kotlin/.../integration/LocationIntegrationTest.kt | Updates integration test to stub and assert against Locations Inside Prison API. |
| src/test/kotlin/.../client/prisonapi/api/PrisonApiClientTest.kt | Removes Prison API client tests for deprecated endpoint. |
| src/test/kotlin/.../client/locationsinsideprison/api/LocationsInsidePrisonAPIClientTest.kt | Adds client tests for new location-groups endpoint (currently contains a suspend/assertThrows issue). |
| src/test/kotlin/.../service/LocationGroupFromLocationsInsidePrisonApiServiceTest.kt | Adds service test for new client call (currently contains a suspend verification issue). |
Comments suppressed due to low confidence (1)
src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsactivitiesmanagementapi/service/LocationGroupFromLocationsInsidePrisonApiServiceTest.kt:52
getLocationGroupsonLocationsInsidePrisonAPIClientis a suspend function. Usingverify(locationsInsidePrisonApiClient).getLocationGroups("LEI")will include the implicitContinuationparameter and typically won't verify correctly. Use Mockito-Kotlin'sverifyBlocking { ... }for suspend functions instead (as done elsewhere in the test suite).
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
...ice/digital/hmpps/hmppsactivitiesmanagementapi/service/LocationGroupFromPropertiesService.kt
Show resolved
Hide resolved
...ice/digital/hmpps/hmppsactivitiesmanagementapi/service/LocationGroupFromPropertiesService.kt
Outdated
Show resolved
Hide resolved
...tivitiesmanagementapi/client/locationsinsideprison/api/LocationsInsidePrisonAPIClientTest.kt
Show resolved
Hide resolved
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 14 out of 17 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Work Done:
PrisonApiClientusing the deprecated endpoint ("/api/agencies/{agencyId}/locations/groups") from PrisonApi has been removed and a new getLocationGroups() has been added toLocationsInsidePrisonAPIClientfor the new endpoint ("/locations/prison/{prisonCode}/groups") in LocationsInsidePrisonApi.PrisonApiMockServerand moved toLocationsInsidePrisonApiMockServer.Ticket: SAA-4082