UNPKG

igo

Version:

Igo is a Node.js Web Framework based on Express

129 lines (115 loc) 3.69 kB
require('../../src/dev/test/init'); const assert = require('assert'); const _ = require('lodash'); const validator = require('../../src/connect/validator'); const UserForm = require('./UserForm'); const ArrayForm = require('./ArrayForm'); // describe('igo.Form', () => { const reqWithBody = (body) => { const req = {}; const res = { locals: {} }; validator(req, res, () => {}); req.body = body; return req; }; it('should validate form', () => { const body = { email: 'noooo@nooo.fr', int: '1 234', float: '1234,56', date: '24/12/2000', check: 'on', yesno: 'yes' }; const form = new UserForm().submit(reqWithBody(body)); assert.strictEqual(form.errors, null); assert(_.isDate(form.date)); assert.strictEqual(form.int, 1234); assert.strictEqual(form.age, null); assert.strictEqual(form.float, 1234.56); assert.strictEqual(form.price, null); assert.strictEqual(form.check, true); assert.strictEqual(form.yesno, true); }); it('should handle allownull param', () => { const body = { email: 'noooo@nooo.fr', int: '1 234', float: '1234,56', date: '24/12/2000', }; const form = new UserForm().submit(reqWithBody(body)); assert.strictEqual(form.errors, null); assert.strictEqual(form.check, false); assert.strictEqual(form.yesno, null); }); it('should handle custom converters', () => { const body = { email: 'noooo@nooo.fr', int: '1 234', float: '1234,56', date: '24/12/2000', lower: 'ABC', }; const form = new UserForm().submit(reqWithBody(body)); assert.strictEqual(form.errors, null); assert.strictEqual(form.lower, 'abc'); }); it('should validate with array', () => { const body = { array: 'elem', array2: ['elem', 'second_elem'], array_int: ['2', '1 234', ''], array_default: '', array_null: null, }; const form = new ArrayForm().submit(reqWithBody(body)); assert.strictEqual(form.errors, null); assert.strictEqual(form.array.length, 1); assert.strictEqual(form.array2.length, 2); assert.strictEqual(form.array_int[1], 1234); assert.strictEqual(form.array_int[2], null); assert.strictEqual(form.array_default.length, 0); assert.strictEqual(form.array_null, null); }); it('should not validate form with errors', () => { const body = { email: 'noooo' }; const form = new UserForm().submit(reqWithBody(body)); assert.strictEqual(_.keys(form.errors).length, 4); }); it('should handle array values on non-array fields', () => { const body = { email: ['noooo@nooo.fr', 'other@nooo.fr'], int: ['1 234', '5678'], float: ['1234,56'], date: ['24/12/2000'], }; const form = new UserForm().submit(reqWithBody(body)); assert.strictEqual(form.errors, null); assert.strictEqual(form.email, 'noooo@nooo.fr'); assert.strictEqual(form.int, 1234); assert.strictEqual(form.float, 1234.56); assert(_.isDate(form.date)); }); it('should handle zeros as a value', () => { const body = { email: 'noooo@gmail.com', name: '', int: '0', age: 'abc', float: '1234,56', date: '24/12/2000', price: '0.0' }; const form = new UserForm().submit(reqWithBody(body)); assert.strictEqual(_.keys(form.errors).length, 0); assert.strictEqual(form.name, null); assert.strictEqual(form.int, 0); assert.strictEqual(form.age, null); assert.strictEqual(form.float, 1234.56); assert.strictEqual(form.price, 0); }); });