UNPKG

lara-validator

Version:

Validating data based on Laravel validation style

41 lines (37 loc) 1.45 kB
import assert from 'assert'; import wrappers from '../../../src/rules/wrappers'; import RuleMeta from '../../../src/rules/RuleMeta'; /** * * @param {Object} rule * @param {Array} rule.parentPath * @param {String} rule.fieldName * @param {String} rule.ruleWithOptions * @param {Boolean} rule.isNullable * @param {Boolean} rule.presentOnly * @param {Array} testCases * @param {Object} expect * @param {Boolean} expect.result * @param {Array} expect.fail */ export default function (rule, testCases, expect) { testCases.forEach((testCase, index) => { const ruleMeta = new RuleMeta(testCase); ruleMeta.setFieldPath(rule.parentPath, rule.fieldName) .setParentValues() .resetRule() .setRule(rule.ruleWithOptions, rule.isNullable, rule.presentOnly); const path = ruleMeta.fieldPath.join('.'); const ruleWithOptions = ruleMeta.rule; const nullable = (ruleMeta.isNullable) ? '(Allow Null)' : '(Not Allow Null)'; const testCaseInString = JSON.stringify(testCase); const testTitle = `[${path}: ${ruleWithOptions}${nullable} => ${testCaseInString}]`; const ruleValidation = wrappers[ruleMeta.ruleName](ruleMeta); it(testTitle, () => { assert.strictEqual( JSON.stringify(ruleValidation), JSON.stringify(expect) ); }); }); }