From ca20c59cb0d15ff637b69759aee272a6282bce50 Mon Sep 17 00:00:00 2001 From: "Zickermann, Jan" <jan.zickermann@dataport.de> Date: Mon, 4 Mar 2024 16:31:44 +0100 Subject: [PATCH] OZG-4949 OZG-5136 Get message from InvalidParamsItem --- .../validation/tech.validation.util.spec.ts | 28 ++++++++++++++++--- .../lib/validation/tech.validation.util.ts | 27 ++++++++++++++---- 2 files changed, 46 insertions(+), 9 deletions(-) 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 3149fb9d66..ec1c1f5bd3 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 @@ -21,10 +21,17 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { UntypedFormControl, UntypedFormGroup } from '@angular/forms'; -import { createIssue } from '../../../test/error'; -import { Issue } from '../tech.model'; -import { getControlForIssue, getMessageForIssue, setValidationError } from './tech.validation.util'; +import {UntypedFormControl, UntypedFormGroup} from '@angular/forms'; +import {createIssue} from '../../../test/error'; +import {Issue} from '../tech.model'; +import { + getControlForIssue, + getMessageForInvalidParamsItem, + getMessageForIssue, + setValidationError, +} from './tech.validation.util'; +import {InvalidParamsItem} from '@alfa-client/tech-shared'; +import {ValidationMessageCode} from './tech.validation.messages'; describe('ValidationUtils', () => { describe('setValidationError', () => { @@ -136,4 +143,17 @@ describe('ValidationUtils', () => { expect(msg).toContain('3'); }); }); + + describe('get message for invalid-params-item', () => { + const item: InvalidParamsItem = { + name: 'name-of-field', + reason: ValidationMessageCode.VALIDATION_FIELD_EMPTY, + }; + + it('should return message', () => { + const msg = getMessageForInvalidParamsItem(item); + + expect(msg).toEqual(`Bitte ${item.name} ausfüllen`); + }); + }); }); diff --git a/alfa-client/libs/tech-shared/src/lib/validation/tech.validation.util.ts b/alfa-client/libs/tech-shared/src/lib/validation/tech.validation.util.ts index 9007e24112..e8e594efdd 100644 --- a/alfa-client/libs/tech-shared/src/lib/validation/tech.validation.util.ts +++ b/alfa-client/libs/tech-shared/src/lib/validation/tech.validation.util.ts @@ -21,11 +21,12 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { AbstractControl, UntypedFormGroup } from '@angular/forms'; -import { isNil } from 'lodash-es'; -import { ApiError, Issue } from '../tech.model'; -import { replacePlaceholder } from '../tech.util'; -import { ValidationMessageCode, VALIDATION_MESSAGES } from './tech.validation.messages'; +import {AbstractControl, UntypedFormGroup} from '@angular/forms'; +import {isNil} from 'lodash-es'; +import {ApiError, Issue} from '../tech.model'; +import {replacePlaceholder} from '../tech.util'; +import {VALIDATION_MESSAGES, ValidationMessageCode} from './tech.validation.messages'; +import {InvalidParamsItem} from '../error/error.util'; export function isValidationError(issue: Issue): boolean { return issue.messageCode.includes('javax.validation.constraints'); @@ -66,6 +67,22 @@ export function getMessageForIssue(label: string, issue: Issue) { return msg; } +export function getMessageForInvalidParamsItem(item: InvalidParamsItem): string { + let formatString = VALIDATION_MESSAGES[item.reason] ?? item.reason; + + for (const [itemField, value] of Object.entries(item)) { + const itemFieldToPlaceholder = { + name: 'field', + }; + formatString = replacePlaceholder( + formatString, + itemFieldToPlaceholder[itemField] ?? itemField, + value, + ); + } + return formatString; +} + export function getMessageCode(apiError: ApiError): string { return apiError.issues[0].messageCode; } -- GitLab