redux-form
Version:
A higher order component decorator for forms using Redux and React
77 lines (73 loc) • 1.99 kB
JavaScript
import { arraySwap } from '../actions';
var describeArraySwap = function describeArraySwap(reducer, expect, _ref) {
var fromJS = _ref.fromJS;
return function () {
it('should do nothing with empty state', function () {
var state = reducer(undefined, arraySwap('foo', 'myField', 0, 1));
expect(state).toEqualMap({
foo: {}
});
});
it('should swap values and field state', function () {
var state = reducer(fromJS({
foo: {
values: {
myField: {
subField: ['a', 'b', 'c']
}
},
fields: {
myField: {
subField: [{ touched: true }, { touched: true, visited: true }, { touched: true, visited: true }]
}
},
submitErrors: {
myField: {
subField: ['Invalid']
}
}
}
}), arraySwap('foo', 'myField.subField', 0, 2));
expect(state).toEqualMap({
foo: {
values: {
myField: {
subField: ['c', 'b', 'a']
}
},
fields: {
myField: {
subField: [{ touched: true, visited: true }, { touched: true, visited: true }, { touched: true }]
}
},
submitErrors: {
myField: {
subField: [undefined,, 'Invalid'] // eslint-disable-line no-sparse-arrays
}
}
}
});
});
it('should swap overflow values', function () {
var state = reducer(fromJS({
foo: {
values: {
myField: {
subField: ['a', 'b', 'c']
}
}
}
}), arraySwap('foo', 'myField.subField', 0, 3));
expect(state).toEqualMap({
foo: {
values: {
myField: {
subField: [undefined, 'b', 'c', 'a']
}
}
}
});
});
};
};
export default describeArraySwap;