| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| import {FimsValidators} from './validators'; |
| import {FormControl, FormGroup} from '@angular/forms'; |
| import {dateAsISOString} from '../../services/domain/date.converter'; |
| |
| describe('Validators', () => { |
| describe('urlSafe', () => { |
| |
| it('should not return error when url safe', () => { |
| const result = FimsValidators.urlSafe(new FormControl('test-test')); |
| expect(result).toBeNull(); |
| }); |
| |
| it('should return error when not url safe', () => { |
| const result = FimsValidators.urlSafe(new FormControl(' ')); |
| expect(result).toEqual({ urlSafe: true }); |
| }); |
| |
| const notAllowed: string[] = [ |
| '!', |
| '\'', |
| '(', |
| ')', |
| '~', |
| ]; |
| |
| notAllowed.forEach(char => { |
| it(`should return error when when it contains ${char}`, () => { |
| const result = FimsValidators.urlSafe(new FormControl(`${char}`)); |
| expect(result).toEqual({ urlSafe: true }); |
| }); |
| }); |
| |
| }); |
| |
| describe('scale', () => { |
| |
| it('should not return error when scale matches', () => { |
| const validator = FimsValidators.scale(1); |
| expect(validator(new FormControl(1.1))).toBeNull(); |
| }); |
| |
| it('should return error when scale 1', () => { |
| const validator = FimsValidators.scale(1); |
| expect(validator(new FormControl(1))).toEqual({ |
| scale: { |
| valid: false, |
| value: 1 |
| }, |
| }); |
| }); |
| |
| it('should return error when scale 0', () => { |
| const validator = FimsValidators.scale(0); |
| expect(validator(new FormControl(1.2))).toEqual({ |
| scale: { |
| valid: false, |
| value: 0 |
| } |
| }); |
| }); |
| }); |
| |
| describe('minValue with 0', () => { |
| |
| it('should not return error when value 0', () => { |
| const validator = FimsValidators.minValue(0); |
| expect(validator(new FormControl(0))).toBeNull(); |
| }); |
| |
| it('should return error when value -1', () => { |
| const validator = FimsValidators.minValue(0); |
| expect(validator(new FormControl(-1))).toEqual({ |
| minValue: { |
| valid: false, |
| value: 0 |
| } |
| }); |
| }); |
| |
| }); |
| |
| describe('maxValue with 10', () => { |
| it('should not return error when value 10', () => { |
| const validator = FimsValidators.maxValue(10); |
| expect(validator(new FormControl(10))).toBeNull(); |
| }); |
| |
| it('should return error when value 11', () => { |
| const validator = FimsValidators.maxValue(10); |
| expect(validator(new FormControl(11))).toEqual({ |
| maxValue: { |
| valid: false, |
| value: 10 |
| } |
| }); |
| }); |
| |
| }); |
| |
| describe('greaterThanValue with 0', () => { |
| |
| it('should not return error when value 1', () => { |
| const validator = FimsValidators.greaterThanValue(0); |
| expect(validator(new FormControl(1))).toBeNull(); |
| }); |
| |
| it('should return error when value 0', () => { |
| const validator = FimsValidators.greaterThanValue(0); |
| expect(validator(new FormControl(0))).toEqual({ |
| greaterThanValue: { |
| valid: false, |
| value: 0 |
| } |
| }); |
| }); |
| |
| it('should return error when value -1', () => { |
| const validator = FimsValidators.greaterThanValue(0); |
| expect(validator(new FormControl(-1))).toEqual({ |
| greaterThanValue: { |
| valid: false, |
| value: 0 |
| } |
| }); |
| }); |
| |
| }); |
| |
| describe('matchRange', () => { |
| const dateOne = new Date(); |
| const dateTwo = new Date(dateOne.getTime() + 1000); |
| |
| it('should not return error when range is correct', () => { |
| const group = new FormGroup({f1: new FormControl(dateOne.toISOString()), f2: new FormControl(dateTwo.toISOString())}); |
| const validator = FimsValidators.matchRange('f1', 'f2'); |
| expect(validator(group)).toBeNull(); |
| }); |
| |
| it('should return error when range not correct', () => { |
| const group = new FormGroup({f1: new FormControl(dateOne.toISOString()), f2: new FormControl(dateTwo.toISOString())}); |
| const validator = FimsValidators.matchRange('f2', 'f1'); |
| expect(validator(group)).toEqual({ |
| rangeInvalid: true |
| }); |
| }); |
| }); |
| |
| describe('email', () => { |
| it('should return null when email is correct', () => { |
| const result = FimsValidators.email(new FormControl('test@test.de')); |
| expect(result).toBeNull(); |
| }); |
| |
| it('should return error when email is "testtest.de"', () => { |
| const result = FimsValidators.email(new FormControl('testtest.de')); |
| expect(result).toEqual({ |
| email: true |
| }); |
| }); |
| }); |
| |
| describe('requiredNotEmpty', () => { |
| it('should return null when value exists', () => { |
| const result = FimsValidators.requiredNotEmpty(new FormControl('value')); |
| expect(result).toBeNull(); |
| }); |
| |
| it('should return error when no value exists', () => { |
| const result = FimsValidators.requiredNotEmpty(new FormControl('')); |
| expect(result).toEqual({ |
| required: true |
| }); |
| }); |
| |
| it('should return error when value with only whitespaces exists', () => { |
| const result = FimsValidators.requiredNotEmpty(new FormControl(' ')); |
| expect(result).toEqual({ |
| required: true |
| }); |
| }); |
| }); |
| |
| describe('greaterThan', () => { |
| it('should return null when min < max', () => { |
| const validator = FimsValidators.greaterThan('min', 'max'); |
| const group = new FormGroup({ |
| min: new FormControl(1), |
| max: new FormControl(2) |
| }); |
| |
| const result = validator(group); |
| |
| expect(result).toBeNull(); |
| }); |
| |
| it('should return error when min = max', () => { |
| const validator = FimsValidators.greaterThan('min', 'max'); |
| const group = new FormGroup({ |
| min: new FormControl(2), |
| max: new FormControl(2) |
| }); |
| |
| const result = validator(group); |
| |
| expect(result).toEqual({ |
| greaterThan: true |
| }); |
| }); |
| |
| it('should return error when min > max', () => { |
| const validator = FimsValidators.greaterThan('min', 'max'); |
| const group = new FormGroup({ |
| min: new FormControl(2), |
| max: new FormControl(1) |
| }); |
| |
| const result = validator(group); |
| |
| expect(result).toEqual({ |
| greaterThan: true |
| }); |
| }); |
| }); |
| |
| describe('greaterThanEquals', () => { |
| it('should return null when min < max', () => { |
| const validator = FimsValidators.greaterThanEquals('min', 'max'); |
| const group = new FormGroup({ |
| min: new FormControl(1), |
| max: new FormControl(2) |
| }); |
| |
| const result = validator(group); |
| |
| expect(result).toBeNull(); |
| }); |
| |
| it('should return null when min = max', () => { |
| const validator = FimsValidators.greaterThanEquals('min', 'max'); |
| const group = new FormGroup({ |
| min: new FormControl(2), |
| max: new FormControl(2) |
| }); |
| |
| const result = validator(group); |
| |
| expect(result).toBeNull(); |
| }); |
| |
| it('should return error when min > max', () => { |
| const validator = FimsValidators.greaterThanEquals('min', 'max'); |
| const group = new FormGroup({ |
| min: new FormControl(2), |
| max: new FormControl(1) |
| }); |
| |
| const result = validator(group); |
| |
| expect(result).toEqual({ |
| greaterThanEquals: true |
| }); |
| }); |
| }); |
| |
| describe('beforeToday', () => { |
| it('should return null when date before today', () => { |
| const date = new Date(); |
| date.setDate(date.getDate() - 1); |
| |
| const result = FimsValidators.beforeToday(new FormControl(dateAsISOString(date))); |
| |
| expect(result).toBeNull(); |
| }); |
| |
| it('should return error when date after today', () => { |
| const date = new Date(); |
| date.setDate(date.getDate() + 1); |
| |
| const result = FimsValidators.beforeToday(new FormControl(dateAsISOString(date))); |
| |
| expect(result).toEqual({ |
| beforeToday: true |
| }); |
| }); |
| |
| it('should return error when date equals today', () => { |
| const date = new Date(); |
| |
| const result = FimsValidators.beforeToday(new FormControl(dateAsISOString(date))); |
| |
| expect(result).toEqual({ |
| beforeToday: true |
| }); |
| }); |
| }); |
| }); |