Skip to content
Snippets Groups Projects
tech.validation.util.spec.ts 4.05 KiB
Newer Older
  • Learn to ignore specific revisions
  • /*
     * 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.
     */
    
    OZGCloud's avatar
    OZGCloud committed
    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('ValidationUtils', () => {
    
    
    	describe('setValidationError', () => {
    
    
    OZGCloud's avatar
    OZGCloud committed
    		const baseField1Control = new UntypedFormControl();
    		const baseField2Control = new UntypedFormControl();
    		const subGroupFieldControl = new UntypedFormControl();
    
    OZGCloud's avatar
    OZGCloud committed
    		const form = new UntypedFormGroup({
    
    			baseField1: baseField1Control,
    			baseField2: baseField2Control,
    
    OZGCloud's avatar
    OZGCloud committed
    			subGroup: new UntypedFormGroup({
    
    				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', () => {
    
    		it('should return message', () => {
    			const msg = getMessageForIssue(fieldLabel, { ...createIssue(), messageCode: 'validation_field_size' });
    
    
    		});
    
    		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' }] });
    
    
    OZGCloud's avatar
    OZGCloud committed
    			expect(msg).toContain('3');
    
    OZGCloud's avatar
    OZGCloud committed
    })