UNPKG

@defra-fish/dynamics-lib

Version:

Framework to support integration with dynamics

148 lines (141 loc) 6.81 kB
import { PoclValidationError } from '../pocl-validation-error.entity.js' import { retrieveGlobalOptionSets } from '../..' describe('pocl staging exception entity', () => { let optionSetData beforeAll(async () => { optionSetData = await retrieveGlobalOptionSets().cached() }) describe('maps from dynamics', () => { const getPOCLValidationError = () => PoclValidationError.fromResponse( { '@odata.etag': 'W/"56351087"', defra_poclvalidationerrorid: '91f15d18-0aa4-ea11-a812-000d3a64905b', defra_firstname: 'Daniel', defra_name: 'Ricciardo', defra_organisation: 'Fishy Endeavours', defra_premises: '14 Howecroft Court', defra_street: 'Eastmead Lane', defra_locality: 'Stoke Bishop', defra_town: 'Bristol', defra_postcode: 'BS9 1HJ', defra_country: 'GB-ENG', defra_countrylist: 910400195, defra_birthdate: '1989-07-01', defra_emailaddress: 'daniel-ricc@example.couk', defra_mobilenumber: '07722 123456', defra_preferredmethodofnewsletter: 910400003, defra_preferredmethodofconfirmation: 910400000, defra_preferredmethodofreminder: 910400002, defra_postalfulfilment: true, defra_concessions: '[{"type":"Blue Badge","referenceNumber":123456789}]', defra_startdate: '2021-06-15', defra_newstartdate: '2021-06-15', defra_serialnumber: '14345-48457J', defra_permitid: 'test-permit-id', defra_transactiondate: '2020-01-01T14:00:00Z', defra_amount: 30, defra_paymentsource: 'Post Office Sales', defra_newpaymentsource: 910400003, defra_channelid: '948594', defra_methodofpayment: 910400001, defra_status: 910400000, defra_datasource: 910400000, defra_transactionfile: 'test-pocl-file.xml', statecode: 1, defra_errormessage: '"permissions[0].licensee.email" must be a valid email' }, optionSetData ) it('returns a PoclValidationError instance', () => { expect(getPOCLValidationError()).toBeInstanceOf(PoclValidationError) }) it('has the expected data', () => { expect(getPOCLValidationError()).toMatchSnapshot() }) it('has the expected fields', () => { const expectedFields = { firstName: 'Daniel', lastName: 'Ricciardo', organisation: 'Fishy Endeavours', premises: '14 Howecroft Court', street: 'Eastmead Lane', locality: 'Stoke Bishop', town: 'Bristol', postcode: 'BS9 1HJ', countryUnvalidated: 'GB-ENG', country: expect.objectContaining({ id: 910400195, label: 'England', description: 'GB-ENG' }), birthDate: '1989-07-01', email: 'daniel-ricc@example.couk', mobilePhone: '07722 123456', preferredMethodOfConfirmation: expect.objectContaining({ id: 910400000, label: 'Email', description: 'Email' }), preferredMethodOfNewsletter: expect.objectContaining({ id: 910400003, label: 'Prefer not to be contacted', description: 'Prefer not to be contacted' }), preferredMethodOfReminder: expect.objectContaining({ id: 910400002, label: 'Text', description: 'Text' }), postalFulfilment: true, concessions: '[{"type":"Blue Badge","referenceNumber":123456789}]', startDateUnvalidated: '2021-06-15', startDate: '2021-06-15', serialNumber: '14345-48457J', permitId: 'test-permit-id', transactionDate: '2020-01-01T14:00:00Z', amount: 30, paymentSourceUnvalidated: 'Post Office Sales', paymentSource: { description: 'Worldpay', id: 910400003, label: 'Worldpay' }, channelId: '948594', methodOfPayment: expect.objectContaining({ id: 910400001, label: 'Cash', description: 'Cash' }), status: expect.objectContaining({ id: 910400000, label: 'Needs Review', description: 'Needs Review' }), dataSource: expect.objectContaining({ id: 910400000, label: 'Post Office Sales', description: 'Post Office Sales' }), transactionFile: 'test-pocl-file.xml', stateCode: 1, errorMessage: '"permissions[0].licensee.email" must be a valid email' } expect(getPOCLValidationError()).toMatchObject(expect.objectContaining({ etag: 'W/"56351087"', ...expectedFields })) }) }) it('maps to dynamics', async () => { const validationError = new PoclValidationError() validationError.firstName = 'Daniel' validationError.lastName = 'Ricciardo' validationError.organisation = 'Fishy Endeavours' validationError.premises = '14 Howecroft Court' validationError.street = 'Eastmead Lane' validationError.locality = 'Stoke Bishop' validationError.town = 'Bristol' validationError.postcode = 'BS9 1HJ' validationError.countryUnvalidated = 'GB-ENG' validationError.country = optionSetData.defra_country.options['910400195'] validationError.birthDate = '1989-07-01' validationError.email = 'daniel-ricc@example.couk' validationError.mobilePhone = '07722 123456' validationError.preferredMethodOfConfirmation = optionSetData.defra_preferredcontactmethod.options['910400000'] validationError.preferredMethodOfNewsletter = optionSetData.defra_preferredcontactmethod.options['910400003'] validationError.preferredMethodOfReminder = optionSetData.defra_preferredcontactmethod.options['910400002'] validationError.postalFulfilment = true validationError.concessions = '[{"type":"Blue Badge","referenceNumber":123456789}]' validationError.startDateUnvalidated = '2021-06-15' validationError.startDate = '2021-06-15' validationError.serialNumber = '14345-48457J' validationError.permitId = 'test-permit-id' validationError.transactionDate = '2020-01-01T14:00:00Z' validationError.amount = 30 validationError.paymentSourceUnvalidated = 'Post Office Sales' validationError.paymentSource = optionSetData.defra_financialtransactionsource.options['910400003'] validationError.channelId = '948594' validationError.methodOfPayment = optionSetData.defra_paymenttype.options['910400001'] validationError.status = optionSetData.defra_poclvalidationerrorstatus.options['910400000'] validationError.dataSource = optionSetData.defra_datasource.options['910400000'] validationError.transactionFile = 'test-pocl-file.xml' validationError.stateCode = 1 validationError.errorMessage = '"permissions[0].licensee.email" must be a valid email' const dynamicsEntity = validationError.toRequestBody() expect(dynamicsEntity).toMatchSnapshot() }) })