lion/packages/validate/test/StringValidators.test.js
Thijs Louisse 6e81b55e3c feat(validate): new validation api, async validation and more
Co-authored-by: Thomas Allmer <Thomas.Allmer@ing.com>
2019-11-15 16:57:58 +01:00

114 lines
3.1 KiB
JavaScript

import { expect } from '@open-wc/testing';
import {
IsString,
EqualsLength,
MinLength,
MaxLength,
MinMaxLength,
IsEmail,
} from '../src/validators/StringValidators.js';
describe('String Validation', () => {
it('provides new IsString() to allow only strings', () => {
let isEnabled;
const validator = new IsString();
expect(validator.name).to.equal('IsString');
isEnabled = validator.execute('foo');
expect(isEnabled).to.be.false;
isEnabled = validator.execute(NaN);
expect(validator.execute(NaN)).to.be.true;
isEnabled = validator.execute(4);
expect(validator.execute(4)).to.be.true;
});
it('provides new EqualsLength(x) to allow only a specific string length', () => {
let isEnabled;
const validator = new EqualsLength(3);
expect(validator.name).to.equal('EqualsLength');
isEnabled = validator.execute('foo');
expect(isEnabled).to.be.false;
isEnabled = validator.execute('fo');
expect(isEnabled).to.be.true;
isEnabled = validator.execute('foobar');
expect(isEnabled).to.be.true;
});
it('provides new MinLength(x) to allow only strings longer then min', () => {
let isEnabled;
const validator = new MinLength(3);
expect(validator.name).to.equal('MinLength');
isEnabled = validator.execute('foo');
expect(isEnabled).to.be.false;
isEnabled = validator.execute('fo');
expect(isEnabled).to.be.true;
});
it('provides new MaxLength(x) to allow only strings shorter then max', () => {
let isEnabled;
const validator = new MaxLength(3);
expect(validator.name).to.equal('MaxLength');
isEnabled = validator.execute('foo');
expect(isEnabled).to.be.false;
isEnabled = validator.execute('foobar');
expect(isEnabled).to.be.true;
});
it('provides new MinMaxValidator({ min: x, max: y}) to allow only strings between min and max', () => {
let isEnabled;
const validator = new MinMaxLength({ min: 2, max: 4 });
expect(validator.name).to.equal('MinMaxLength');
isEnabled = validator.execute('foo');
expect(isEnabled).to.be.false;
isEnabled = validator.execute('f');
expect(isEnabled).to.be.true;
isEnabled = validator.execute('foobar');
expect(isEnabled).to.be.true;
});
it('provides new IsEmail() to allow only valid email formats', () => {
let isEnabled;
const validator = new IsEmail();
expect(validator.name).to.equal('IsEmail');
isEnabled = validator.execute('foo@bar.com');
expect(isEnabled).to.be.false;
isEnabled = validator.execute('name!#$%*@bar.com');
expect(isEnabled).to.be.false;
isEnabled = validator.execute('foo');
expect(isEnabled).to.be.true;
isEnabled = validator.execute('foo@');
expect(isEnabled).to.be.true;
isEnabled = validator.execute('bar.com');
expect(isEnabled).to.be.true;
isEnabled = validator.execute('@bar.com');
expect(isEnabled).to.be.true;
isEnabled = validator.execute('foo@bar@example.com');
expect(isEnabled).to.be.true;
isEnabled = validator.execute('foo@bar');
expect(isEnabled).to.be.true;
isEnabled = validator.execute('foo@120.120.120.93');
expect(isEnabled).to.be.true;
});
});