From dd3fbaaa79135ba007ce625cec025fb40806d2a3 Mon Sep 17 00:00:00 2001 From: Eran Machiels Date: Sun, 20 Sep 2020 14:09:56 +0200 Subject: [PATCH 1/6] Added basic localization and fixed tests --- __tests__/Area.test.tsx | 47 ++++------ __tests__/Provider.test.tsx | 37 ++++++-- __tests__/Validator.test.ts | 19 ---- __tests__/Validator.test.tsx | 107 ++++++++++++++++++++++ __tests__/rules/max.test.tsx | 14 ++- __tests__/rules/min.test.tsx | 11 ++- __tests__/rules/required.test.tsx | 14 ++- package-lock.json | 65 +++++++++++++ package.json | 1 + src/Rule.ts | 4 +- src/RuleOptions.ts | 3 +- src/Validator.ts | 147 +++++++++++++++++++++++++++++- src/ValidatorArea.tsx | 32 +++---- src/rules/max.ts | 38 ++++---- src/rules/min.ts | 38 ++++---- src/rules/required.ts | 5 +- 16 files changed, 438 insertions(+), 144 deletions(-) delete mode 100644 __tests__/Validator.test.ts create mode 100644 __tests__/Validator.test.tsx diff --git a/__tests__/Area.test.tsx b/__tests__/Area.test.tsx index 0be1ce2..38115bd 100644 --- a/__tests__/Area.test.tsx +++ b/__tests__/Area.test.tsx @@ -2,9 +2,19 @@ import React from 'react'; import { mount } from 'enzyme'; import { ValidatorArea, Validator } from '../src'; import { ValidatorAreaProps } from '../src/ValidatorArea'; -import required from '../src/rules/required'; describe('test Provider', () => { + beforeEach(() => { + Validator.extend('passes_not', { + passed(): boolean { + return false; + }, + message(): string { + return 'not passed'; + } + }); + }); + it('should render input', () => { const area = mount( @@ -64,43 +74,18 @@ describe('test Provider', () => { it('should apply rules on blur', () => { const area = mount( - + ); area.find('input').at(0).simulate('blur'); - expect(area.state().errors[0]).toBe('Test is required'); + expect(area.state().errors[0]).toBe('Not passed'); }); it('should render error when area dirty', async () => { const area = mount( - - {({ errors }) => ( - <> - - {errors.length &&
{errors[0]}
} - - )} -
- ); - - area.find('input').simulate('blur'); - expect(area.find('div').text()).toBe('Test is required'); - }) - - it('should validate element with rule string', () => { - Validator.extend('testrule', { - passed(): boolean { - return false; - }, - message(): string { - return 'string rule passed'; - } - }); - - const area = mount( - + {({ errors }) => ( <> @@ -111,14 +96,14 @@ describe('test Provider', () => { ); area.find('input').simulate('blur'); - expect(area.find('div').text()).toBe('string rule passed'); + expect(area.find('div').text()).toBe('Not passed'); }) it('should call element\'s provided blur along validator blur', () => { const mockFn = jest.fn(); const area = mount( - + ); diff --git a/__tests__/Provider.test.tsx b/__tests__/Provider.test.tsx index c1e30b2..e7da24d 100644 --- a/__tests__/Provider.test.tsx +++ b/__tests__/Provider.test.tsx @@ -1,7 +1,6 @@ import React from 'react'; import { mount } from 'enzyme'; -import { ValidatorArea, ValidatorProvider } from '../src'; -import required from '../src/rules/required'; +import { Validator, ValidatorArea, ValidatorProvider } from '../src'; import { ValidatorProviderProps } from '../src/Provider'; @@ -12,9 +11,29 @@ const tick = () => { } describe('test Provider', () => { + beforeEach(() => { + Validator.extend('passes_not', { + passed(): boolean { + return false; + }, + message(): string { + return 'not passed'; + } + }); + + Validator.extend('passes', { + passed(): boolean { + return true; + }, + message(): string { + return 'passed'; + } + }); + }); + it('should render Provider', () => { const provider = mount( - + ); expect(provider.instance().props.rules).toBeDefined(); @@ -35,7 +54,7 @@ describe('test Provider', () => { } expect(() => provider()).toThrow('Validation area names should be unique'); - }) + }); it('should render with function as child', () => { const provider = mount( @@ -45,7 +64,7 @@ describe('test Provider', () => { ); expect(provider.find('div').text()).toBe('test'); - }) + }); it('should add an area when provided as child', () => { const provider = mount( @@ -69,10 +88,10 @@ describe('test Provider', () => { {({ validate }) => ( <> - + - +