Add assertions to catch trying to add undefined schemas

This commit is contained in:
Fabio Berger
2019-01-08 17:07:10 +01:00
parent 5e39eae84e
commit e2df4b355b

View File

@@ -8,12 +8,18 @@ import { schemas } from './schemas';
*/ */
export class SchemaValidator { export class SchemaValidator {
private readonly _validator: Validator; private readonly _validator: Validator;
private static _assertSchemaNotUndefined(schema: Schema): void {
if (schema === undefined) {
throw new Error(`Cannot add undefined schema`);
}
}
/** /**
* Instantiates a SchemaValidator instance * Instantiates a SchemaValidator instance
*/ */
constructor() { constructor() {
this._validator = new Validator(); this._validator = new Validator();
for (const schema of values(schemas)) { for (const schema of values(schemas)) {
SchemaValidator._assertSchemaNotUndefined(schema);
this._validator.addSchema(schema, schema.id); this._validator.addSchema(schema, schema.id);
} }
} }
@@ -24,6 +30,7 @@ export class SchemaValidator {
* @param schema The schema to add * @param schema The schema to add
*/ */
public addSchema(schema: Schema): void { public addSchema(schema: Schema): void {
SchemaValidator._assertSchemaNotUndefined(schema);
this._validator.addSchema(schema, schema.id); this._validator.addSchema(schema, schema.id);
} }
// In order to validate a complex JS object using jsonschema, we must replace any complex // In order to validate a complex JS object using jsonschema, we must replace any complex
@@ -37,6 +44,8 @@ export class SchemaValidator {
* @returns The results of the validation * @returns The results of the validation
*/ */
public validate(instance: any, schema: Schema): ValidatorResult { public validate(instance: any, schema: Schema): ValidatorResult {
console.log('validating....');
SchemaValidator._assertSchemaNotUndefined(schema);
const jsonSchemaCompatibleObject = JSON.parse(JSON.stringify(instance)); const jsonSchemaCompatibleObject = JSON.parse(JSON.stringify(instance));
return this._validator.validate(jsonSchemaCompatibleObject, schema); return this._validator.validate(jsonSchemaCompatibleObject, schema);
} }