diff --git a/alfa-client/libs/tech-shared/src/lib/validation/tech.validation.util.spec.ts b/alfa-client/libs/tech-shared/src/lib/validation/tech.validation.util.spec.ts index dc9b252a76c61cb862874c627c32fd14af236af2..bb2e5b51d1be004bced187df35871e16a00d738a 100644 --- a/alfa-client/libs/tech-shared/src/lib/validation/tech.validation.util.spec.ts +++ b/alfa-client/libs/tech-shared/src/lib/validation/tech.validation.util.spec.ts @@ -22,10 +22,11 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ import { AbstractControl, FormControl, FormGroup, UntypedFormControl, UntypedFormGroup } from '@angular/forms'; +import { faker } from '@faker-js/faker'; import { createInvalidParam, createIssue, createProblemDetail } from '../../../test/error'; import { InvalidParam, Issue } from '../tech.model'; -import { ValidationMessageCode } from './tech.validation.messages'; -import { getControlForInvalidParam, getControlForIssue, getFieldPath, getMessageForIssue, getMessageReason, setInvalidParamValidationError, setIssueValidationError } from './tech.validation.util'; +import { VALIDATION_MESSAGES, ValidationMessageCode } from './tech.validation.messages'; +import { getControlForInvalidParam, getControlForIssue, getFieldPath, getMessageForInvalidParam, getMessageForIssue, getMessageReason, setInvalidParamValidationError, setIssueValidationError } from './tech.validation.util'; describe('ValidationUtils', () => { const baseField1Control: FormControl = new UntypedFormControl(); @@ -276,4 +277,62 @@ describe('ValidationUtils', () => { expect(reason).toBeNull(); }); }); + + describe('getMessageForInvalidParam', () => { + const label: string = faker.random.word(); + + it('should return undefined reason', () => { + const invalidParam: InvalidParam = createInvalidParam(); + + const message: string = getMessageForInvalidParam(label, { + ...invalidParam, + reason: undefined, + }); + + expect(message).toBeUndefined(); + }); + + it('should return message', () => { + const invalidParam: InvalidParam = createInvalidParam(); + + const message: string = getMessageForInvalidParam(label, { + ...invalidParam, + reason: ValidationMessageCode.FIELD_DATE_FORMAT_INVALID, + }); + expect(message).toEqual(VALIDATION_MESSAGES[ValidationMessageCode.FIELD_DATE_FORMAT_INVALID]); + }); + + it('should return message with field placeholder', () => { + const invalidParam: InvalidParam = createInvalidParam(); + + const message: string = getMessageForInvalidParam(label, { + ...invalidParam, + reason: ValidationMessageCode.FIELD_INVALID, + }); + expect(message).toEqual( + VALIDATION_MESSAGES[ValidationMessageCode.FIELD_INVALID].replace('{field}', label), + ); + }); + + it('should return message with placeholders', () => { + const invalidParam: InvalidParam = createInvalidParam(); + const min: string = '1'; + const max: string = '5'; + + const message: string = getMessageForInvalidParam(label, { + ...invalidParam, + reason: ValidationMessageCode.FIELD_SIZE, + constraintParameters: [ + { name: 'min', value: min }, + { name: 'max', value: max }, + ], + }); + expect(message).toEqual( + VALIDATION_MESSAGES[ValidationMessageCode.FIELD_SIZE] + .replace('{field}', label) + .replace('{min}', min) + .replace('{max}', max), + ); + }); + }); });