@defra-fish/gafl-webapp-service
Version:
The websales frontend for the GAFL service
136 lines (121 loc) • 4.01 kB
JavaScript
import pageRoute from '../../../../../routes/page-route.js'
import { CANCEL_RP_ALREADY_CANCELLED, NEW_TRANSACTION } from '../../../../../uri.js'
import { addLanguageCodeToUri } from '../../../../../processors/uri-helper.js'
require('../route.js')
// eslint-disable-next-line no-unused-vars
const getData = pageRoute.mock.calls[0][4]
jest.mock('../../../../../routes/page-route.js', () => jest.fn())
jest.mock('../../../../../uri.js', () => ({
...jest.requireActual('../../../../../uri.js'),
CANCEL_RP_ALREADY_CANCELLED: {
page: Symbol('cancel-rp-already-cancelled page'),
uri: Symbol('cancel-rp-already-cancelled uri')
}
}))
jest.mock('../../../../../processors/uri-helper.js')
const getSampleRequest = referenceNumber => ({
cache: jest.fn(() => ({
helpers: {
page: {
getCurrentPermission: jest.fn(() => ({ payload: { referenceNumber: 'rp0310', endDate: '2025:10:03:03:33:33' } }))
}
}
}))
})
describe('pageRoute receives expected arguments', () => {
it('passes CANCEL_RP_ALREADY_CANCELLED.page as the view name', () => {
jest.isolateModules(() => {
require('../route.js')
expect(pageRoute).toHaveBeenCalledWith(
CANCEL_RP_ALREADY_CANCELLED.page,
expect.anything(),
expect.anything(),
expect.anything(),
expect.anything()
)
})
})
it('passes CANCEL_RP_ALREADY_CANCELLED.uri as the path', () => {
jest.isolateModules(() => {
require('../route.js')
expect(pageRoute).toHaveBeenCalledWith(
expect.anything(),
CANCEL_RP_ALREADY_CANCELLED.uri,
expect.anything(),
expect.anything(),
expect.anything()
)
})
})
it('passes a function as the validator', () => {
jest.isolateModules(() => {
require('../route.js')
expect(pageRoute).toHaveBeenCalledWith(
expect.anything(),
expect.anything(),
expect.any(Function),
expect.anything(),
expect.anything()
)
})
})
it('passes a function to generate redirect location on completion', () => {
jest.isolateModules(() => {
require('../route.js')
expect(pageRoute).toHaveBeenCalledWith(
expect.anything(),
expect.anything(),
expect.anything(),
expect.any(Function),
expect.anything()
)
})
})
it('passes getData to pageRoute', () => {
jest.isolateModules(() => {
require('../route.js')
expect(pageRoute).toHaveBeenCalledWith(
expect.anything(),
expect.anything(),
expect.anything(),
expect.anything(),
expect.any(Function)
)
})
})
})
describe('getData', () => {
it('returns reference number from payload', async () => {
const referenceNumber = 'RP0310'
expect(await getData(getSampleRequest(referenceNumber))).toEqual(
expect.objectContaining({
referenceNumber
})
)
})
it('capitalises reference number', async () => {
const request = getSampleRequest()
const data = await getData(request)
expect(data.referenceNumber).toEqual('RP0310')
})
it('transforms end date to display format', async () => {
const endDate = '2025-10-03T03:33:33.000Z'
const request = getSampleRequest()
request.cache().helpers.page.getCurrentPermission.mockResolvedValueOnce({
payload: { referenceNumber: 'RP0310', endDate }
})
const data = await getData(request)
expect(data.endDate).toEqual('3 October 2025')
})
it('calls addLanguageCodeToUri with NEW_TRANSACTION.uri', async () => {
const request = getSampleRequest()
await getData(request)
expect(addLanguageCodeToUri).toHaveBeenCalledWith(request, NEW_TRANSACTION.uri)
})
it('sets data.uri.new to the decorated URL', async () => {
const expectedUri = Symbol('expected uri')
addLanguageCodeToUri.mockReturnValueOnce(expectedUri)
const result = await getData(getSampleRequest())
expect(result.uri.new).toBe(expectedUri)
})
})