UNPKG

@deskpro/react-forms

Version:
98 lines (80 loc) 4.72 kB
'use strict'; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /** * @copyright 2015, Prometheus Research, LLC */ var _update = require('../update'); describe('react-forms', function () { describe('update', function () { it('updates values', function () { assert.deepEqual((0, _update.update)({}, [], 1), 1); assert.deepEqual((0, _update.update)({}, ['a'], 1), { a: 1 }); assert.deepEqual((0, _update.update)({ a: 2 }, ['a'], 1), { a: 1 }); assert.deepEqual((0, _update.update)({ b: 2 }, ['a'], 1), { a: 1, b: 2 }); assert.deepEqual((0, _update.update)(undefined, ['a'], 1), { a: 1 }); assert.deepEqual((0, _update.update)(null, ['a'], 1), { a: 1 }); assert.deepEqual((0, _update.update)({}, ['a', 'b'], 1), { a: { b: 1 } }); assert.deepEqual((0, _update.update)({ a: { b: 2 } }, ['a', 'b'], 1), { a: { b: 1 } }); assert.deepEqual((0, _update.update)({ a: { a: 2 } }, ['a', 'b'], 1), { a: { a: 2, b: 1 } }); assert.deepEqual((0, _update.update)(undefined, ['a', 'b'], 1), { a: { b: 1 } }); assert.deepEqual((0, _update.update)(null, ['a', 'b'], 1), { a: { b: 1 } }); assert.deepEqual((0, _update.update)({}, ['a', 0], 1), { a: [1] }); assert.deepEqual((0, _update.update)(null, ['a', 0], 1), { a: [1] }); assert.deepEqual((0, _update.update)(undefined, ['a', 0], 1), { a: [1] }); assert.deepEqual((0, _update.update)({ a: [] }, ['a', 0], 1), { a: [1] }); assert.deepEqual((0, _update.update)({ a: [2] }, ['a', 0], 1), { a: [1] }); assert.deepEqual((0, _update.update)({ a: [2] }, ['a', 1], 1), { a: [2, 1] }); assert.deepEqual((0, _update.update)({}, ['a', 0, 'b'], 1), { a: [{ b: 1 }] }); assert.deepEqual((0, _update.update)(null, ['a', 0, 'b'], 1), { a: [{ b: 1 }] }); assert.deepEqual((0, _update.update)(undefined, ['a', 0, 'b'], 1), { a: [{ b: 1 }] }); assert.deepEqual((0, _update.update)({ a: null }, ['a', 0, 'b'], 1), { a: [{ b: 1 }] }); assert.deepEqual((0, _update.update)({ a: undefined }, ['a', 0, 'b'], 1), { a: [{ b: 1 }] }); assert.deepEqual((0, _update.update)({ a: [] }, ['a', 0, 'b'], 1), { a: [{ b: 1 }] }); assert.deepEqual((0, _update.update)({ a: [{ b: null }] }, ['a', 0, 'b'], 1), { a: [{ b: 1 }] }); assert.deepEqual((0, _update.update)({ a: [{ b: undefined }] }, ['a', 0, 'b'], 1), { a: [{ b: 1 }] }); assert.deepEqual((0, _update.update)({ a: [2] }, ['a', 0], 1), { a: [1] }); assert.deepEqual((0, _update.update)({ a: [2] }, ['a', 1], 1), { a: [2, 1] }); assert.deepEqual((0, _update.update)([], [0], 1), [1]); assert.deepEqual((0, _update.update)(null, [0], 1), [1]); assert.deepEqual((0, _update.update)(undefined, [0], 1), [1]); assert.deepEqual((0, _update.update)([0], [0], 1), [1]); assert.deepEqual((0, _update.update)([0], [1], 1), [0, 1]); }); it('executes onUpdate hooks', function () { var schema = { onUpdate: function onUpdate(value, _ref) { var key = _ref.key, schema = _ref.schema; return _extends({}, value, { tag: 'data', key: key }); }, properties: { a: { onUpdate: function onUpdate(value, _ref2) { var key = _ref2.key, schema = _ref2.schema; return _extends({}, value, { tag: 'a', key: key }); }, properties: { b: { onUpdate: function onUpdate(value, _ref3) { var key = _ref3.key, schema = _ref3.schema; assert(key === undefined); return value + '!'; } } } } } }; assert.deepEqual((0, _update.update)({}, ['a', 'b'], 'ok', schema), { a: { b: 'ok!', key: 'b', tag: 'a' }, key: 'a', tag: 'data' }); }); }); });