Skip to content
This repository was archived by the owner on Aug 23, 2022. It is now read-only.

Commit dc26cf1

Browse files
committed
Fixing actions.reset behavior for dynamically added fields. Fixes #798, fixes #791
1 parent 7bf2efb commit dc26cf1

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/utils/create-field.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ export function updateFieldState(existingFieldState, updatedFieldState) {
4040

4141
export default function createFieldState(model, value, customInitialFieldState) {
4242
return {
43+
initialValue: value,
4344
...initialFieldState,
4445
...customInitialFieldState,
4546
model,
4647
value,
47-
initialValue: value,
4848
};
4949
}
5050

test/form-reducer-spec.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,4 +291,25 @@ describe('formReducer()', () => {
291291
assert.equal(touchedState.bar.initialValue, 'initial');
292292
});
293293
});
294+
295+
describe('form reset after dynamically adding fields', () => {
296+
const initialState = { filters: {} };
297+
const reducer = formReducer('test', initialState);
298+
const firstState = reducer(undefined, { type: 'any' });
299+
const addedState = reducer(firstState, actions.change('test.filters.one', true));
300+
301+
it('form initial value should not change when adding fields', () => {
302+
assert.deepEqual(addedState.filters.$form.initialValue, {});
303+
assert.deepEqual(addedState.filters.$form.value, { one: true });
304+
assert.isDefined(addedState.filters.one);
305+
});
306+
307+
it('form should reset completely to its initial value', () => {
308+
const resetState = reducer(addedState, actions.reset('test.filters'));
309+
310+
assert.deepEqual(resetState.filters.$form.initialValue, {});
311+
assert.deepEqual(resetState.filters.$form.value, {});
312+
assert.isUndefined(resetState.filters.one);
313+
});
314+
});
294315
});

0 commit comments

Comments
 (0)