react-formio-helper
Version:
Helper library for apps built with react and form.io.
164 lines (143 loc) • 3.19 kB
JavaScript
import expect from 'expect';
import deepFreeze from 'deep-freeze';
import formReducer from '../src/reducers/form';
import {
FORM_REQUEST,
FORM_SUCCESS,
FORM_FAILURE
} from '../src/actions/form';
describe('Form Reducer', function() {
it('Sets a default state', function(done) {
const action = {
type: 'None'
};
const stateAfter = {
src: '',
name: '',
isFetching: false,
lastUpdated: 0,
form: {},
error: ''
};
deepFreeze(action);
expect(
formReducer(undefined, action)
).toEqual(stateAfter);
done();
});
it('Sets isFetching on FORM_REQUEST', function(done) {
const stateBefore = {
src: '',
name: '',
isFetching: false,
lastUpdated: 0,
form: {}
};
const action = {
type: FORM_REQUEST,
src: '',
name: ''
};
const stateAfter = {
src: '',
name: '',
isFetching: true,
lastUpdated: 0,
form: {}
};
deepFreeze(stateBefore);
deepFreeze(action);
expect(
formReducer(stateBefore, action)
).toEqual(stateAfter);
done();
});
it('Sets the src and name on FORM_REQUEST', function(done) {
const stateBefore = {
src: '',
isFetching: false,
lastUpdated: 0,
form: {}
};
const action = {
type: FORM_REQUEST,
src: 'https://examples.form.io/simple',
name: 'simple'
};
const stateAfter = {
src: 'https://examples.form.io/simple',
name: 'simple',
isFetching: true,
lastUpdated: 0,
form: {}
};
deepFreeze(stateBefore);
deepFreeze(action);
expect(
formReducer(stateBefore, action)
).toEqual(stateAfter);
done();
});
it('Sets the form definition on FORM_SUCCESS', function(done) {
const stateBefore = {
src: 'https://examples.form.io/simple',
name: 'simple',
isFetching: true,
lastUpdated: 0,
form: {},
error: 'Some old error'
};
const action = {
type: FORM_SUCCESS,
form: {
name: 'Test',
components: []
}
};
const stateAfter = {
src: 'https://examples.form.io/simple',
name: 'simple',
isFetching: false,
lastUpdated: 0,
form: {
name: 'Test',
components: []
},
error: ''
};
deepFreeze(stateBefore);
deepFreeze(action);
expect(
formReducer(stateBefore, action)
).toEqual(stateAfter);
done();
});
it('Sets the error on FORM_FAILURE', function(done) {
const stateBefore = {
src: 'https://examples.form.io/simple',
name: 'simple',
isFetching: true,
lastUpdated: 0,
form: {}
};
const action = {
type: FORM_FAILURE,
error: 'Something failed'
};
const stateAfter = {
src: 'https://examples.form.io/simple',
name: 'simple',
isFetching: false,
lastUpdated: 0,
form: {},
isInvalid: true,
error: 'Something failed'
};
deepFreeze(stateBefore);
deepFreeze(action);
expect(
formReducer(stateBefore, action)
).toEqual(stateAfter);
done();
});
});