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 { UntypedFormControl, UntypedFormGroup } from '@angular/forms';
import { createIssue } from '../../../test/error';
import { Issue } from '../tech.model';
import { getControlForIssue, getMessageForIssue, setValidationError } from './tech.validation.util';
describe('setValidationError', () => {
const baseField1Control = new UntypedFormControl();
const baseField2Control = new UntypedFormControl();
const subGroupFieldControl = new UntypedFormControl();
baseField1: baseField1Control,
baseField2: baseField2Control,
subGroupField1: subGroupFieldControl
})
});
describe('get control for issue', () => {
it('should return base field control', () => {
const issue: Issue = { ...createIssue(), field: 'baseField1' };
const control = getControlForIssue(form, issue);
expect(control).toBe(baseField1Control);
});
it('should reeturn sub group field', () => {
const issue: Issue = { ...createIssue(), field: 'subGroup.subGroupField1' };
const control = getControlForIssue(form, issue);
expect(control).toBe(subGroupFieldControl);
})
it('should ignore path prefix', () => {
const issue: Issue = { ...createIssue(), field: 'command.wiedervorlage.baseField1' };
const control = getControlForIssue(form, issue, 'command.wiedervorlage');
expect(control).toBe(baseField1Control);
})
})
describe('in base field', () => {
const issue: Issue = { ...createIssue(), field: 'baseField1' };
it('should set error in control', () => {
setValidationError(form, issue);
expect(baseField1Control.errors).not.toBeNull();
});
it('should set message code in control', () => {
setValidationError(form, issue);
expect(baseField1Control.hasError(issue.messageCode)).toBe(true);
});
it('should set control touched', () => {
setValidationError(form, issue);
expect(baseField1Control.touched).toBe(true);
})
it('should not set error in other control', () => {
setValidationError(form, issue);
expect(baseField2Control.errors).toBeNull();
});
});
describe('in subGroup Field', () => {
const issue: Issue = { ...createIssue(), field: 'subGroup.subGroupField1' };
it('should set error in control', () => {
setValidationError(form, issue);
expect(subGroupFieldControl.errors).not.toBeNull();
});
});
});
describe('get message for issue', () => {
const fieldLabel = 'Field Label';
it('should return message', () => {
const msg = getMessageForIssue(fieldLabel, { ...createIssue(), messageCode: 'validation_field_size' });

OZGCloud
committed
expect(msg).toContain('muss mindestens');
});
it('should set field label', () => {
const msg = getMessageForIssue(fieldLabel, { ...createIssue(), messageCode: 'validation_field_size' });
expect(msg).toContain(fieldLabel);
});
it('should replace min param', () => {
const msg = getMessageForIssue(fieldLabel, { ...createIssue(), messageCode: 'validation_field_size', parameters: [{ name: 'min', value: '3' }] });