2020-02-17 11:22:36 +08:00

34 lines
1.1 KiB
TypeScript

import Ajv from 'ajv';
import test from 'ava';
import fs = require('fs');
import yaml = require('js-yaml');
import path = require('path');
const schema = yaml.load(fs.readFileSync(path.resolve(__dirname, '../../schemas/schema.yml'), 'utf8'));
const ajv = new Ajv({jsonPointers: true});
const validate = ajv.compile(schema);
let fixtures = fs.readdirSync(path.join(__dirname, 'fixtures'));
fixtures = fixtures.filter(item => !item.includes('.skip'));
if (fixtures.find(item => item.includes('.only'))) {
fixtures = fixtures.filter(item => item.includes('.only'));
}
for (const dir of fixtures) {
const fullPath = path.join(__dirname, 'fixtures', dir);
test(`should be right in dir ${dir}`, async (t) => {
const json = yaml.safeLoad(fs.readFileSync(path.resolve(fullPath, 'schema.json'), 'utf-8'));
let validateResult: any = validate(json);
if (validateResult === true) {
validateResult = {
success: true,
};
} else {
validateResult = {
success: false,
errors: validate.errors,
};
}
t.snapshot(validateResult);
});
}