redux-form
Version:
A higher order component decorator for forms using Redux and React
367 lines (354 loc) • 10.7 kB
JavaScript
;
var _expect = require('expect');
var _expect2 = _interopRequireDefault(_expect);
var _getValue = require('../getValue');
var _getValue2 = _interopRequireDefault(_getValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('getValue', function () {
it('should return value if non-event value is passed', function () {
(0, _expect2.default)((0, _getValue2.default)(undefined, true)).toBe(undefined);
(0, _expect2.default)((0, _getValue2.default)(undefined, false)).toBe(undefined);
(0, _expect2.default)((0, _getValue2.default)(null, true)).toBe(null);
(0, _expect2.default)((0, _getValue2.default)(null, false)).toBe(null);
(0, _expect2.default)((0, _getValue2.default)(5, true)).toBe(5);
(0, _expect2.default)((0, _getValue2.default)(5, false)).toBe(5);
(0, _expect2.default)((0, _getValue2.default)(true, true)).toBe(true);
(0, _expect2.default)((0, _getValue2.default)(true, false)).toBe(true);
(0, _expect2.default)((0, _getValue2.default)(false, true)).toBe(false);
(0, _expect2.default)((0, _getValue2.default)(false, false)).toBe(false);
});
it('should unwrap value if non-event object containing value key is passed', function () {
(0, _expect2.default)((0, _getValue2.default)({ value: 5 }, true)).toBe(5);
(0, _expect2.default)((0, _getValue2.default)({ value: 5 }, false)).toBe(5);
(0, _expect2.default)((0, _getValue2.default)({ value: true }, true)).toBe(true);
(0, _expect2.default)((0, _getValue2.default)({ value: true }, false)).toBe(true);
(0, _expect2.default)((0, _getValue2.default)({ value: false }, true)).toBe(false);
(0, _expect2.default)((0, _getValue2.default)({ value: false }, false)).toBe(false);
});
it('should return value if object NOT containing value key is passed', function () {
var foo = { bar: 5, baz: 8 };
(0, _expect2.default)((0, _getValue2.default)(foo)).toBe(foo);
});
it('should return event.nativeEvent.text if defined and not react-native', function () {
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
nativeEvent: {
text: 'foo'
}
}, false)).toBe('foo');
});
it('should return event.nativeEvent.text if react-native', function () {
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
nativeEvent: {
text: 'foo'
}
}, true)).toBe('foo');
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
nativeEvent: {
text: undefined
}
}, true)).toBe(undefined);
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
nativeEvent: {
text: null
}
}, true)).toBe(null);
});
it('should return event.target.checked if checkbox', function () {
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
type: 'checkbox',
checked: true
}
}, true)).toBe(true);
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
type: 'checkbox',
checked: true
}
}, false)).toBe(true);
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
type: 'checkbox',
checked: false
}
}, true)).toBe(false);
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
type: 'checkbox',
checked: false
}
}, false)).toBe(false);
});
it('should return event.target.files if file', function () {
var myFiles = ['foo', 'bar'];
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
type: 'file',
files: myFiles
}
}, true)).toBe(myFiles);
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
type: 'file',
files: myFiles
}
}, false)).toBe(myFiles);
});
it('should return event.dataTransfer.files if file and files not in target.files', function () {
var myFiles = ['foo', 'bar'];
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
type: 'file'
},
dataTransfer: {
files: myFiles
}
}, true)).toBe(myFiles);
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
type: 'file'
},
dataTransfer: {
files: myFiles
}
}, false)).toBe(myFiles);
});
it('should return selected options if is a multiselect', function () {
var options = [{ selected: true, value: 'foo' }, { selected: true, value: 'bar' }, { selected: false, value: 'baz' }];
var expected = options.filter(function (option) {
return option.selected;
}).map(function (option) {
return option.value;
});
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
type: 'select-multiple',
options: options
}
}, true)).toEqual(expected);
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
type: 'select-multiple',
options: options
}
}, false)).toEqual(expected);
});
it('should return event.target.value if not file or checkbox', function () {
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
value: undefined
}
}, true)).toBe(undefined);
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
value: undefined
}
}, false)).toBe(undefined);
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
value: null
}
}, true)).toBe(null);
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
value: null
}
}, false)).toBe(null);
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
value: true
}
}, true)).toBe(true);
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
value: true
}
}, false)).toBe(true);
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
value: false
}
}, true)).toBe(false);
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
value: false
}
}, false)).toBe(false);
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
value: 42
}
}, true)).toBe(42);
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
value: 42
}
}, false)).toBe(42);
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
value: 'foo'
}
}, true)).toBe('foo');
(0, _expect2.default)((0, _getValue2.default)({
preventDefault: function preventDefault() {
return null;
},
stopPropagation: function stopPropagation() {
return null;
},
target: {
value: 'foo'
}
}, false)).toBe('foo');
});
});