Skip to content

Commit

Permalink
crs-1956-nomis-override-date-hints (#872)
Browse files Browse the repository at this point in the history
Change getNomisCalculationSummary to use an updated CRD endpoint for retrieving Nomis calculation with override dates.

It's necessary to pass the bookingId in order to obtain override dates.
  • Loading branch information
mg-moj authored Jan 21, 2025
1 parent 904baca commit 5e45720
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 17 deletions.
15 changes: 11 additions & 4 deletions server/api/calculateReleaseDatesApiClient.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,16 +55,23 @@ describe('Calculate release dates API client tests', () => {

describe('Get nomis calculation summary for prisoner', () => {
it('Get nomis calculation summary for offenderSentCalcId fails with 404 and throws Error', async () => {
fakeApi.get(`/calculation/nomis-calculation-summary/${offenderSentCalcId}`, '').reply(404)
const bookingId = 123456
fakeApi
.get(`/calculation/nomis-calculation-summary/booking/${bookingId}/calculation/${offenderSentCalcId}`, '')
.reply(404)
const client = new CalculateReleaseDatesApiClient(token)
await expect(client.getNomisCalculationSummary(offenderSentCalcId)).rejects.toThrow('Not Found')
await expect(client.getNomisCalculationSummary(offenderSentCalcId, bookingId)).rejects.toThrow('Not Found')
})

it('Get nomis calculation summary for offenderSentCalcId successfully', async () => {
const bookingId = 123456
fakeApi
.get(`/calculation/nomis-calculation-summary/${offenderSentCalcId}`, '')
.get(`/calculation/nomis-calculation-summary/booking/${bookingId}/calculation/${offenderSentCalcId}`, '')
.reply(200, nomisCalculationSummary)
const data = await new CalculateReleaseDatesApiClient(token).getNomisCalculationSummary(offenderSentCalcId)
const data = await new CalculateReleaseDatesApiClient(token).getNomisCalculationSummary(
offenderSentCalcId,
bookingId,
)
expect(data).toEqual(nomisCalculationSummary)
expect(nock.isDone()).toBe(true)
})
Expand Down
4 changes: 2 additions & 2 deletions server/api/calculateReleaseDatesApiClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -329,9 +329,9 @@ export default class CalculateReleaseDatesApiClient {
}) as Promise<DateTypeDefinition[]>
}

getNomisCalculationSummary(offenderSentCalcId: number): Promise<NomisCalculationSummary> {
getNomisCalculationSummary(offenderSentCalcId: number, bookingId: number): Promise<NomisCalculationSummary> {
return this.restClient.get({
path: `/calculation/nomis-calculation-summary/${offenderSentCalcId}`,
path: `/calculation/nomis-calculation-summary/booking/${bookingId}/calculation/${offenderSentCalcId}`,
}) as Promise<NomisCalculationSummary>
}

Expand Down
1 change: 1 addition & 0 deletions server/routes/viewRoutes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,7 @@ export default class ViewRoutes {
const prisonerDetail = await this.prisonerService.getPrisonerDetail(nomsId, caseloads, token)
const pastNomisCalculation = await this.calculateReleaseDatesService.getNomisCalculationSummary(
offenderSentCalculationId,
prisonerDetail.bookingId,
token,
)
res.render(
Expand Down
21 changes: 12 additions & 9 deletions server/services/calculateReleaseDatesService.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -175,18 +175,21 @@ describe('Calculate release dates service tests', () => {

describe('Test nomis calculation summary', () => {
it('asserting successful scenario', async () => {
fakeApi.get(`/calculation/nomis-calculation-summary/${offenderSentCalcId}`).reply(200, nomisCalculationSummary)

const result = await calculateReleaseDatesService.getNomisCalculationSummary(offenderSentCalcId, token)

const bookingId = 123456
fakeApi
.get(`/calculation/nomis-calculation-summary/booking/${bookingId}/calculation/${offenderSentCalcId}`)
.reply(200, nomisCalculationSummary)
const result = await calculateReleaseDatesService.getNomisCalculationSummary(offenderSentCalcId, bookingId, token)
expect(result).toEqual(nomisCalculationSummary)
})
it('asserting fail scenario', async () => {
fakeApi.get(`/calculation/nomis-calculation-summary/${offenderSentCalcId}`).reply(404)

await expect(calculateReleaseDatesService.getNomisCalculationSummary(offenderSentCalcId, token)).rejects.toThrow(
'Not Found',
)
const bookingId = 123456
fakeApi
.get(`/calculation/nomis-calculation-summary/booking/${bookingId}/calculation/${offenderSentCalcId}`)
.reply(404)
await expect(
calculateReleaseDatesService.getNomisCalculationSummary(offenderSentCalcId, bookingId, token),
).rejects.toThrow('Not Found')
})
})

Expand Down
8 changes: 6 additions & 2 deletions server/services/calculateReleaseDatesService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -480,8 +480,12 @@ export default class CalculateReleaseDatesService {
}
}

async getNomisCalculationSummary(offenderSentCalcId: number, token: string): Promise<NomisCalculationSummary> {
return new CalculateReleaseDatesApiClient(token).getNomisCalculationSummary(offenderSentCalcId)
async getNomisCalculationSummary(
offenderSentCalcId: number,
bookingId: number,
token: string,
): Promise<NomisCalculationSummary> {
return new CalculateReleaseDatesApiClient(token).getNomisCalculationSummary(offenderSentCalcId, bookingId)
}

async getReleaseDatesForACalcReqId(calcRequestId: number, token: string): Promise<ReleaseDatesAndCalculationContext> {
Expand Down

0 comments on commit 5e45720

Please sign in to comment.