Newer
Older
/*
* Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
import {
AbstractControl,
FormControl,
FormGroup,
UntypedFormControl,
UntypedFormGroup,
} from '@angular/forms';
import { createIssue } from '../../../test/error';
import { InvalidParam, Issue } from '../tech.model';
getMessageForInvalidParam,
setIssueValidationError,
} from './tech.validation.util';
import { ValidationMessageCode } from './tech.validation.messages';
describe('set issue validation error', () => {
const baseField1Control: FormControl = new UntypedFormControl();
const baseField2Control: FormControl = new UntypedFormControl();
const subGroupFieldControl: FormControl = new UntypedFormControl();
const form: FormGroup = new UntypedFormGroup({
baseField1: baseField1Control,
baseField2: baseField2Control,
subGroup: new UntypedFormGroup({
subGroupField1: subGroupFieldControl,
}),
});
describe('get control for issue', () => {
it('should return base field control', () => {
const issue: Issue = { ...createIssue(), field: 'baseField1' };
const control: AbstractControl = getControlForIssue(form, issue);
expect(control).toBe(baseField1Control);
});
it('should return sub group field', () => {
const issue: Issue = { ...createIssue(), field: 'subGroup.subGroupField1' };
const control: AbstractControl = getControlForIssue(form, issue);
expect(control).toBe(subGroupFieldControl);
});
const issue: Issue = { ...createIssue(), field: 'pathprefix.resource.baseField1' };
const control: AbstractControl = getControlForIssue(form, issue, 'pathprefix.resource');
expect(control).toBe(baseField1Control);
});
});
describe('in base field', () => {
const issue: Issue = { ...createIssue(), field: 'baseField1' };
setIssueValidationError(form, issue);
expect(baseField1Control.errors).not.toBeNull();
});
it('should set message code in control', () => {
setIssueValidationError(form, issue);
expect(baseField1Control.hasError(issue.messageCode)).toBe(true);
});
setIssueValidationError(form, issue);
expect(baseField1Control.touched).toBe(true);
});
it('should not set error in other control', () => {
setIssueValidationError(form, issue);
expect(baseField2Control.errors).toBeNull();
});
});
describe('in subGroup Field', () => {
const issue: Issue = { ...createIssue(), field: 'subGroup.subGroupField1' };
setIssueValidationError(form, issue);
expect(subGroupFieldControl.errors).not.toBeNull();
});
});
});
const fieldLabel: string = 'Field Label';
const msg: string = getMessageForIssue(fieldLabel, {
...createIssue(),
messageCode: 'validation_field_size',
});
expect(msg).toContain('muss mindestens');
});
const msg: string = getMessageForIssue(fieldLabel, {
...createIssue(),
messageCode: 'validation_field_size',
});
const msg: string = getMessageForIssue(fieldLabel, {
...createIssue(),
messageCode: 'validation_field_size',
parameters: [{ name: 'min', value: '3' }],
});
describe('get message for invalid-params-item', () => {
const item: InvalidParam = {
name: 'name-of-field',
reason: ValidationMessageCode.VALIDATION_FIELD_EMPTY,
};
it('should return message', () => {
const msg: string = getMessageForInvalidParam(item);
expect(msg).toEqual(`Bitte ${item.name} ausfüllen`);
});
});
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
// describe('setValidationDetails', () => {
// let form: UntypedFormGroup;
// const fieldName = 'test-field';
// beforeEach(() => {
// form = formService.form;
// const control = new FormControl('');
// form.addControl(fieldName, control);
// });
// it('should set invalid-params of validation-problem-details on control', () => {
// const validationDetails: ProblemDetail = createAbsenderNameProblemDetail();
// const item = validationDetails['invalid-params'][0];
// item.name = '.' + fieldName;
// formService.setErrorByProblemDetail(validationDetails);
// const itemError = form.getError(item.reason, fieldName);
// expect(itemError).toBe(
// getMessageForInvalidParamsItem({
// ...item,
// name: fieldName,
// }),
// );
// });
// });
// describe('set error by api error', () => {
// // let form: UntypedFormGroup;
// const fieldName: string = 'test-field';
// beforeEach(() => {
// // form = formService.form;
// // const control = ;
// formService.form.addControl(fieldName, new FormControl(''));
// });
// it('should set issues of api-error on control', () => {
// const issue: Issue = { ...createIssue(), field: TestFormService + '.' + fieldName };
// const apiError: ApiError = createApiError([issue]);
// formService.setErrorByApiError(apiError);
// expect(formService.form.getError(issue.messageCode, fieldName)).toBe(issue);
// });
// });
// export function createAbsenderNameProblemDetail(invalidParams: InvalidParam[]): ProblemDetail {
// return {
// type: 'about:blank',
// title: 'Unprocessable Entity',
// status: HttpStatusCode.UnprocessableEntity,
// detail: 'settingsBody.absender.name: validation_field_empty',
// instance: '/api/configuration/settings/65df039a69eeafef365a42dd',
// 'invalid-params': invalidParams,
// };
// }
// export function createAbsenderNameInvalidParam(): InvalidParam {
// return {
// name: 'settingsBody.absender.name',
// reason: ValidationMessageCode.VALIDATION_FIELD_EMPTY,
// };
// }