lara-validator
Version:
Validating data based on Laravel validation style
165 lines (155 loc) • 6.27 kB
JavaScript
import testHelper from "./testHelper";
describe('wrappers.max', () => {
describe('one layer data', () => {
describe('expect [true]', () => {
const expect = { result: true, fail: [] };
const testCases = [
{mainDish: 5},
{mainDish: 6},
{mainDish: '410'},
{mainDish: ['dish0', 'dish1', 'dish2']},
];
const nullTestCases = [
{mainDish: null}
];
testHelper({
parentPath: [],
fieldName: 'mainDish',
ruleWithOptions: 'max:6',
isNullable: false,
presentOnly: false
}, testCases, expect);
testHelper({
parentPath: [],
fieldName: 'mainDish',
ruleWithOptions: 'max:6',
isNullable: true,
presentOnly: false
}, nullTestCases, expect);
});
describe('expect [false]', () => {
const expect = { result: false, fail: [['mainDish']] };
const testCases = [
{mainDish: 7},
{mainDish: '6 chars'},
{mainDish: [0, 1, 2, 3, 4, 5, 6]},
{mainDish: undefined},
{mainDish: null},
{mainDish: {}},
41,
'ABC',
true,
];
testHelper({
parentPath: [],
fieldName: 'mainDish',
ruleWithOptions: 'max:6',
isNullable: false,
presentOnly: false
}, testCases, expect);
});
});
describe('three layers data', () => {
describe('expect [true]', () => {
const expect = { result: true, fail: [] };
const testCases = [
{order: {aLaCaret: {dish: 5}}},
{order: {aLaCaret: {dish: 6}}},
{order: {aLaCaret: {dish: 'abcd'}}},
{order: {aLaCaret: {dish: 'abcdef'}}},
{order: {aLaCaret: {dish: ['dish0', 'dish1']}}},
];
const nullTestCases = [
{order: {aLaCaret: {dish: null}}},
];
testHelper({
parentPath: ['order', 'aLaCaret'],
fieldName: 'dish',
ruleWithOptions: 'max:6',
isNullable: false,
presentOnly: false
}, testCases, expect);
testHelper({
parentPath: ['order', 'aLaCaret'],
fieldName: 'dish',
ruleWithOptions: 'max:6',
isNullable: true,
presentOnly: false
}, nullTestCases, expect);
});
describe('expect [false]', () => {
const expect = { result: false, fail: [['order', 'aLaCaret', 'dish']] };
const testCases = [
{order: {aLaCaret: {dish: 410}}},
{order: {aLaCaret: {dish: 'chars more then 6'}}},
{order: {aLaCaret: {dish: [0, 1, 2, 3, 4, 5, 6]}}},
{order: {aLaCaret: {dish: undefined}}},
{order: {aLaCaret: {dish: 120}}},
{order: {aLaCaret: {dish: {}}}},
{order: {aLaCaret: {dish: {}}}},
{order: {aLaCaret: 41}},
{order: {aLaCaret: true}},
];
testHelper({
parentPath: ['order', 'aLaCaret'],
fieldName: 'dish',
ruleWithOptions: 'max:6',
isNullable: false,
presentOnly: false
}, testCases, expect);
});
});
describe('array data', () => {
describe('expect [true]', () => {
const expect = { result: true, fail: [] };
const testCases = [
{aLaCaret: [{dish: 6}, {dish: 5}, {dish: 0}]},
{aLaCaret: [{dish: 'Abcde'}, {dish: '6chars'}, {dish: 'abc'}]},
{aLaCaret: [{dish: [0, 1, 2, 3, 4]}, {dish: ['A', 'B', 'C', 'D']}, {dish: [0, 'B', 1]}]},
];
const nullTestCases = [
{aLaCaret: [{dish: 6}, {dish: 5}, {dish: null}]},
{aLaCaret: [{dish: null}, {dish: null}, {dish: null}]},
];
testHelper({
parentPath: ['aLaCaret', '*'],
fieldName: 'dish',
ruleWithOptions: 'max:6',
isNullable: false,
presentOnly: false
}, testCases, expect);
testHelper({
parentPath: ['aLaCaret', '*'],
fieldName: 'dish',
ruleWithOptions: 'max:6',
isNullable: true,
presentOnly: false
}, nullTestCases, expect);
});
describe('expect [false]', () => {
const expects = [
{ result: false, fail: [['aLaCaret', '0', 'dish']] },
{ result: false, fail: [['aLaCaret', '0', 'dish']] },
{ result: false, fail: [['aLaCaret', '1', 'dish']] },
{ result: false, fail: [['aLaCaret', '2', 'dish']] },
{ result: false, fail: [['aLaCaret', '2', 'dish']] },
];
const testCases = [
{aLaCaret: [{dish: 100}, {dish: 98}, {dish: 96}]},
{aLaCaret: [{dish: '7 chars'}, {dish: 'Abcd'}, {dish: 'abc'}]},
{aLaCaret: [{dish: 5}, {dish: [0, 1, 2, 3, 4, 5, 6]}]},
{aLaCaret: [{dish: 4}, {dish: 3}, {dish: '7 chars'}]},
{aLaCaret: [{dish: 3}, {dish: 2}, {dish: 'more then 6 chars'}]},
];
testCases.forEach((testCase, index) => {
testHelper({
parentPath: ['aLaCaret', '*'],
fieldName: 'dish',
ruleWithOptions: 'max:6',
isNullable: false,
presentOnly: false
}, [testCase], expects[index]);
});
});
});
});