From c28a23269b76762b43ea19162c833bbc2e2e7e78 Mon Sep 17 00:00:00 2001 From: Kristof Hermans Date: Wed, 22 Jul 2020 09:53:57 +0200 Subject: [PATCH] move files around for better structure --- src/__mocks__/address-mock.ts | 2 +- src/__mocks__/user-mock.ts | 2 +- .../validation/boolean-validator.spec.ts} | 2 +- .../validation/boolean-validator.ts} | 0 src/lib/validation/index.ts | 9 +++++++ .../validation/model-validator.spec.ts} | 2 +- .../validation/model-validator.ts} | 24 +++++++------------ .../validation/number-validator.spec.ts} | 2 +- .../validation/number-validator.ts} | 0 .../validation/object-validator.spec.ts} | 2 +- .../validation/object-validator.ts} | 0 .../validation/string-validator.spec.ts} | 2 +- .../validation/string-validator.ts} | 0 src/utils/validation/Validator.ts | 3 --- src/utils/validation/index.ts | 7 ------ 15 files changed, 24 insertions(+), 33 deletions(-) rename src/{utils/validation/BooleanValidator.spec.ts => lib/validation/boolean-validator.spec.ts} (94%) rename src/{utils/validation/BooleanValidator.ts => lib/validation/boolean-validator.ts} (100%) create mode 100644 src/lib/validation/index.ts rename src/{utils/validation/ModelValidator.spec.ts => lib/validation/model-validator.spec.ts} (99%) rename src/{utils/validation/ModelValidator.ts => lib/validation/model-validator.ts} (80%) rename src/{utils/validation/NumberValidator.spec.ts => lib/validation/number-validator.spec.ts} (94%) rename src/{utils/validation/NumberValidator.ts => lib/validation/number-validator.ts} (100%) rename src/{utils/validation/ObjectValidator.spec.ts => lib/validation/object-validator.spec.ts} (95%) rename src/{utils/validation/ObjectValidator.ts => lib/validation/object-validator.ts} (100%) rename src/{utils/validation/StringValidator.spec.ts => lib/validation/string-validator.spec.ts} (94%) rename src/{utils/validation/StringValidator.ts => lib/validation/string-validator.ts} (100%) delete mode 100644 src/utils/validation/Validator.ts delete mode 100644 src/utils/validation/index.ts diff --git a/src/__mocks__/address-mock.ts b/src/__mocks__/address-mock.ts index ea70937..3fc0ff4 100644 --- a/src/__mocks__/address-mock.ts +++ b/src/__mocks__/address-mock.ts @@ -1,4 +1,4 @@ -import { Primitives } from '../utils/validation/ModelValidator'; +import { Primitives } from '../lib/validation/model-validator'; export const mockAddressModel = [ { key: 'street', required: true, type: Primitives.String }, diff --git a/src/__mocks__/user-mock.ts b/src/__mocks__/user-mock.ts index 746b19a..164aabd 100644 --- a/src/__mocks__/user-mock.ts +++ b/src/__mocks__/user-mock.ts @@ -1,5 +1,5 @@ import { mockAddress, mockAddressModel } from './address-mock'; -import { NonPrimitives, Primitives } from '../utils/validation/ModelValidator'; +import { NonPrimitives, Primitives } from '../lib/validation/model-validator'; export const mockUserModel = [ { key: 'firstname', required: true, type: Primitives.String }, diff --git a/src/utils/validation/BooleanValidator.spec.ts b/src/lib/validation/boolean-validator.spec.ts similarity index 94% rename from src/utils/validation/BooleanValidator.spec.ts rename to src/lib/validation/boolean-validator.spec.ts index 07fbf0d..d35d058 100644 --- a/src/utils/validation/BooleanValidator.spec.ts +++ b/src/lib/validation/boolean-validator.spec.ts @@ -1,4 +1,4 @@ -import { BooleanValidator } from './BooleanValidator'; +import { BooleanValidator } from './boolean-validator'; describe('BooleanValidator', () => { const validator = new BooleanValidator(); diff --git a/src/utils/validation/BooleanValidator.ts b/src/lib/validation/boolean-validator.ts similarity index 100% rename from src/utils/validation/BooleanValidator.ts rename to src/lib/validation/boolean-validator.ts diff --git a/src/lib/validation/index.ts b/src/lib/validation/index.ts new file mode 100644 index 0000000..8c47120 --- /dev/null +++ b/src/lib/validation/index.ts @@ -0,0 +1,9 @@ +export interface Validator { + validate(value: any): boolean; +} + +export { BooleanValidator } from './boolean-validator'; +export { ModelValidator } from './model-validator'; +export { NumberValidator } from './number-validator'; +export { ObjectValidator } from './object-validator'; +export { StringValidator } from './string-validator'; diff --git a/src/utils/validation/ModelValidator.spec.ts b/src/lib/validation/model-validator.spec.ts similarity index 99% rename from src/utils/validation/ModelValidator.spec.ts rename to src/lib/validation/model-validator.spec.ts index 790ddce..d5cdb0f 100644 --- a/src/utils/validation/ModelValidator.spec.ts +++ b/src/lib/validation/model-validator.spec.ts @@ -91,7 +91,7 @@ describe('ModelValidator', () => { const invalidUserWithAddressValidator = new ModelValidator(invalidMockUserWithAddressModel, validators); const { errors, isValid } = invalidUserWithAddressValidator.validate(mockUserWithAddress); - expect(errors).toEqual(['Model validation error: missing nested model address']); + expect(errors).toEqual(['Model validation error: missing nested model for key address']); expect(isValid).toEqual(false); }); diff --git a/src/utils/validation/ModelValidator.ts b/src/lib/validation/model-validator.ts similarity index 80% rename from src/utils/validation/ModelValidator.ts rename to src/lib/validation/model-validator.ts index ef17ad8..bbd15c0 100644 --- a/src/utils/validation/ModelValidator.ts +++ b/src/lib/validation/model-validator.ts @@ -53,15 +53,11 @@ export class ModelValidator { const nestedModels = this.model.filter((property) => property.type === NonPrimitives.Object); nestedModels.forEach((nestedModel) => { const { key, model } = nestedModel; - - if (model && key) { - const nestedObj = obj[key]; - const validator = new ModelValidator(model, this.typeValidators); - const { errors } = validator.validate(nestedObj); - errors.forEach(this.invalidate); - } else { - this.invalidate(`missing nested model ${key}`); - } + if (!model) return this.invalidate(`missing nested model for key ${key}`); + const nestedObj = obj[key]; + const validator = new ModelValidator(model, this.typeValidators); + const { errors } = validator.validate(nestedObj); + errors.forEach(this.invalidate); }); }; @@ -80,13 +76,9 @@ export class ModelValidator { const typeValidator = this.getValidatorForType(expectedType); const objectProperty = obj[key]; - if (typeValidator) { - if (this.hasInvalidType(objectProperty, typeValidator)) { - const errorMsg = `expected ${key} to have type ${expectedType} but has type ${typeof objectProperty}`; - return this.invalidate(errorMsg); - } - } else { - return this.invalidate(`missing validator for type ${expectedType}`); + if (!typeValidator) return this.invalidate(`missing validator for type ${expectedType}`); + if (this.hasInvalidType(objectProperty, typeValidator)) { + this.invalidate(`expected ${key} to have type ${expectedType} but has type ${typeof objectProperty}`); } }); }; diff --git a/src/utils/validation/NumberValidator.spec.ts b/src/lib/validation/number-validator.spec.ts similarity index 94% rename from src/utils/validation/NumberValidator.spec.ts rename to src/lib/validation/number-validator.spec.ts index 47ebb86..2dae49d 100644 --- a/src/utils/validation/NumberValidator.spec.ts +++ b/src/lib/validation/number-validator.spec.ts @@ -1,4 +1,4 @@ -import { NumberValidator } from './NumberValidator'; +import { NumberValidator } from './number-validator'; describe('NumberValidator', () => { const validator = new NumberValidator(); diff --git a/src/utils/validation/NumberValidator.ts b/src/lib/validation/number-validator.ts similarity index 100% rename from src/utils/validation/NumberValidator.ts rename to src/lib/validation/number-validator.ts diff --git a/src/utils/validation/ObjectValidator.spec.ts b/src/lib/validation/object-validator.spec.ts similarity index 95% rename from src/utils/validation/ObjectValidator.spec.ts rename to src/lib/validation/object-validator.spec.ts index 25f6269..31c6d15 100644 --- a/src/utils/validation/ObjectValidator.spec.ts +++ b/src/lib/validation/object-validator.spec.ts @@ -1,4 +1,4 @@ -import { ObjectValidator } from './ObjectValidator'; +import { ObjectValidator } from './object-validator'; describe('ObjectValidator', () => { const validator = new ObjectValidator(); diff --git a/src/utils/validation/ObjectValidator.ts b/src/lib/validation/object-validator.ts similarity index 100% rename from src/utils/validation/ObjectValidator.ts rename to src/lib/validation/object-validator.ts diff --git a/src/utils/validation/StringValidator.spec.ts b/src/lib/validation/string-validator.spec.ts similarity index 94% rename from src/utils/validation/StringValidator.spec.ts rename to src/lib/validation/string-validator.spec.ts index c3d168a..d092921 100644 --- a/src/utils/validation/StringValidator.spec.ts +++ b/src/lib/validation/string-validator.spec.ts @@ -1,4 +1,4 @@ -import { StringValidator } from './StringValidator'; +import { StringValidator } from './string-validator'; describe('StringValidator', () => { const validator = new StringValidator(); diff --git a/src/utils/validation/StringValidator.ts b/src/lib/validation/string-validator.ts similarity index 100% rename from src/utils/validation/StringValidator.ts rename to src/lib/validation/string-validator.ts diff --git a/src/utils/validation/Validator.ts b/src/utils/validation/Validator.ts deleted file mode 100644 index 0d280df..0000000 --- a/src/utils/validation/Validator.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface Validator { - validate(value: any): boolean; -} diff --git a/src/utils/validation/index.ts b/src/utils/validation/index.ts deleted file mode 100644 index b646964..0000000 --- a/src/utils/validation/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -export { BooleanValidator } from './BooleanValidator'; -export { ModelValidator } from './ModelValidator'; -export { NumberValidator } from './NumberValidator'; -export { ObjectValidator } from './ObjectValidator'; -export { StringValidator } from './StringValidator'; - -export { Validator } from './Validator';