@defra-fish/gafl-webapp-service
Version:
The websales frontend for the GAFL service
106 lines (93 loc) • 5.17 kB
JavaScript
import { start, stop, initialize, injectWithCookies, mockSalesApi } from '../../../../__mocks__/test-utils-system.js'
import { DISABILITY_CONCESSION, LICENCE_TO_START, TEST_TRANSACTION, LICENCE_LENGTH } from '../../../../uri.js'
import { disabilityConcessionTypes } from '../update-transaction.js'
import * as concessionHelper from '../../../../processors/concession-helper.js'
import { CONCESSION_PROOF } from '../../../../processors/mapping-constants.js'
mockSalesApi()
beforeAll(() => new Promise(resolve => start(resolve)))
beforeAll(() => new Promise(resolve => initialize(resolve)))
afterAll(d => stop(d))
describe('The disability concession page', () => {
it('returns success on requesting', async () => {
const response = await injectWithCookies('GET', DISABILITY_CONCESSION.uri)
expect(response.statusCode).toBe(200)
})
it('redirects back to itself on posting an empty payload', async () => {
const response = await injectWithCookies('POST', DISABILITY_CONCESSION.uri, {})
expect(response.statusCode).toBe(302)
expect(response.headers.location).toHaveValidPathFor(DISABILITY_CONCESSION.uri)
})
it('redirects back to itself on posting PIP with an invalid NI number', async () => {
const response = await injectWithCookies('POST', DISABILITY_CONCESSION.uri, {
'disability-concession': disabilityConcessionTypes.pipDla,
'ni-number': 'not-valid'
})
expect(response.statusCode).toBe(302)
expect(response.headers.location).toHaveValidPathFor(DISABILITY_CONCESSION.uri)
})
it('on setting a correct ni number it redirects to the licence-to-start page', async () => {
const response = await injectWithCookies('POST', DISABILITY_CONCESSION.uri, {
'disability-concession': disabilityConcessionTypes.pipDla,
'ni-number': 'NH 34 67 44 A'
})
expect(response.statusCode).toBe(302)
expect(response.headers.location).toHaveValidPathFor(LICENCE_TO_START.uri)
})
it('on setting a correct ni number adds a disabled concession to the cache', async () => {
await injectWithCookies('POST', DISABILITY_CONCESSION.uri, {
'disability-concession': disabilityConcessionTypes.pipDla,
'ni-number': 'NH 34 67 44 A'
})
const { payload } = await injectWithCookies('GET', TEST_TRANSACTION.uri)
expect(concessionHelper.hasDisabled(JSON.parse(payload).permissions[0])).toBeTruthy()
expect(JSON.parse(payload).permissions[0].concessions[0].proof).toEqual({
type: CONCESSION_PROOF.NI,
referenceNumber: 'NH 34 67 44 A'
})
})
it('on selecting blue badge or meets criteria of bb, it causes a redirect to the licence-to-start page', async () => {
const response = await injectWithCookies('POST', DISABILITY_CONCESSION.uri, {
'disability-concession': disabilityConcessionTypes.blueBadge
})
expect(response.statusCode).toBe(302)
expect(response.headers.location).toHaveValidPathFor(LICENCE_TO_START.uri)
})
it('on selecting blue badge or meets criteria of bb, it adds a disabled concession to the cache', async () => {
await injectWithCookies('POST', DISABILITY_CONCESSION.uri, {
'disability-concession': disabilityConcessionTypes.blueBadge
})
const { payload } = await injectWithCookies('GET', TEST_TRANSACTION.uri)
expect(concessionHelper.hasDisabled(JSON.parse(payload).permissions[0])).toBeTruthy()
expect(JSON.parse(payload).permissions[0].concessions[0].proof).toEqual({
type: CONCESSION_PROOF.blueBadge
})
})
it('on setting a disability concession and changing to a 8 day licence and back, the concession is restored', async () => {
await injectWithCookies('POST', DISABILITY_CONCESSION.uri, {
'disability-concession': disabilityConcessionTypes.blueBadge
})
await injectWithCookies('POST', LICENCE_LENGTH.uri, { 'licence-length': '8D' })
const { payload } = await injectWithCookies('GET', TEST_TRANSACTION.uri)
expect(concessionHelper.hasDisabled(JSON.parse(payload).permissions[0])).not.toBeTruthy()
await injectWithCookies('POST', LICENCE_LENGTH.uri, { 'licence-length': '12M' })
const { payload: payload2 } = await injectWithCookies('GET', TEST_TRANSACTION.uri)
expect(concessionHelper.hasDisabled(JSON.parse(payload2).permissions[0])).toBeTruthy()
expect(JSON.parse(payload2).permissions[0].concessions[0].proof).toEqual({
type: CONCESSION_PROOF.blueBadge
})
})
it("on setting 'no' does not add disabled concession to the cache", async () => {
await injectWithCookies('POST', DISABILITY_CONCESSION.uri, {
'disability-concession': disabilityConcessionTypes.no
})
const { payload } = await injectWithCookies('GET', TEST_TRANSACTION.uri)
expect(concessionHelper.hasDisabled(JSON.parse(payload).permissions[0])).not.toBeTruthy()
})
it("on setting 'no' it causes a redirect to the licence-to-start page", async () => {
const response = await injectWithCookies('POST', DISABILITY_CONCESSION.uri, {
'disability-concession': disabilityConcessionTypes.no
})
expect(response.statusCode).toBe(302)
expect(response.headers.location).toHaveValidPathFor(LICENCE_TO_START.uri)
})
})