Skip to content

Commit cc9eef7

Browse files
authored
Add support for MU prefix in ACAS number validation and update tests (#2141)
1 parent 0d03fc3 commit cc9eef7

File tree

4 files changed

+43
-7
lines changed

4 files changed

+43
-7
lines changed

src/main/components/form/validator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ export const isNotPdfFileType = (value: Express.Multer.File): string => {
207207

208208
export const isAcasNumberValid: Validator = value => {
209209
const valueAsString = value as string;
210-
if (!/^[rR]\d{6}\/\d{2}\/\d{2}$/.test(valueAsString)) {
210+
if (!/^(?:[rR]|[mM][uU])\d{6}\/\d{2}\/\d{2}$/.test(valueAsString)) {
211211
return 'invalidAcasNumber';
212212
}
213213
};

src/main/controllers/AcasCertNumController.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export default class AcasCertNumController {
4242
label: (l: AnyRecord): string => l.acasCertNum,
4343
labelAsHint: true,
4444
classes: 'govuk-textarea',
45-
attributes: { maxLength: 13 },
45+
attributes: { maxLength: 14 },
4646
},
4747
},
4848
},

src/test/unit/components/validator.test.ts

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ describe('Validation', () => {
320320
expect(isValid).toStrictEqual('invalidAcasNumber');
321321
});
322322

323-
it('Should check if value starts with R', () => {
323+
it('Should check if value starts with R or MU', () => {
324324
const beginsWithT = isAcasNumberValid('T123458/89/13');
325325
const beginsWithQ = isAcasNumberValid('q123456/78/12');
326326
const beginsWithDigit = isAcasNumberValid('1234556/79/12');
@@ -330,10 +330,12 @@ describe('Validation', () => {
330330
expect(beginsWithDigit).toStrictEqual('invalidAcasNumber');
331331
});
332332

333-
it('Should check if has any numeric or / character after R', () => {
334-
const isValid = isAcasNumberValid('R12345/789a12');
333+
it('Should check if has any numeric or / character after R or MU', () => {
334+
const invalidAfterR = isAcasNumberValid('R12345/789a12');
335+
const invalidAfterMU = isAcasNumberValid('MU12345/789a12');
335336

336-
expect(isValid).toStrictEqual('invalidAcasNumber');
337+
expect(invalidAfterR).toStrictEqual('invalidAcasNumber');
338+
expect(invalidAfterMU).toStrictEqual('invalidAcasNumber');
337339
});
338340

339341
it('Should check if has any repeating / character like //', () => {
@@ -386,10 +388,33 @@ describe('Validation', () => {
386388
expect(isValid).toStrictEqual(undefined);
387389
});
388390

389-
it('Should validate corect RNNNNNN/NN/NN format', () => {
391+
it('Should allow MU prefix in any case', () => {
392+
const mu = isAcasNumberValid('MU123456/78/12');
393+
const Mu = isAcasNumberValid('Mu123456/78/12');
394+
const mU = isAcasNumberValid('mU123456/78/12');
395+
const muLower = isAcasNumberValid('mu123456/78/12');
396+
expect(mu).toStrictEqual(undefined);
397+
expect(Mu).toStrictEqual(undefined);
398+
expect(mU).toStrictEqual(undefined);
399+
expect(muLower).toStrictEqual(undefined);
400+
});
401+
402+
it('Should reject RU and RMU prefixes', () => {
403+
const ru = isAcasNumberValid('RU123456/78/12');
404+
const rmu = isAcasNumberValid('RMU123456/78/12');
405+
expect(ru).toStrictEqual('invalidAcasNumber');
406+
expect(rmu).toStrictEqual('invalidAcasNumber');
407+
});
408+
409+
it('Should validate correct RNNNNNN/NN/NN format', () => {
390410
const isValid = isAcasNumberValid('R123456/78/12');
391411
expect(isValid).toStrictEqual(undefined);
392412
});
413+
414+
it('Should validate correct MUNNNNNN/NN/NN format', () => {
415+
const isValid = isAcasNumberValid('MU123456/78/12');
416+
expect(isValid).toStrictEqual(undefined);
417+
});
393418
});
394419
describe('isContent100CharsOrLess()', () => {
395420
it('should not warn when content is 100 characters or less', () => {

src/test/unit/controller/AcasCertNumController.test.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,4 +122,15 @@ describe('Acas Cert Num Controller', () => {
122122
expect(req.session.userCase.respondents[0].acasCertNum).toEqual('R123456/12/34');
123123
expect(req.session.userCase.respondents[0].acasCert).toEqual(YesOrNo.YES);
124124
});
125+
126+
it('should add MU acas number to the session userCase', async () => {
127+
const body = { acasCert: YesOrNo.YES, acasCertNum: 'MU123456/12/34' };
128+
const controller = new AcasCertNumController();
129+
const req = mockRequest({ body });
130+
const res = mockResponse();
131+
132+
await controller.post(req, res);
133+
expect(req.session.userCase.respondents[0].acasCertNum).toEqual('MU123456/12/34');
134+
expect(req.session.userCase.respondents[0].acasCert).toEqual(YesOrNo.YES);
135+
});
125136
});

0 commit comments

Comments
 (0)