diff --git a/src/reducers/dataReducer.js b/src/reducers/dataReducer.js index ebfb442d..fc345334 100644 --- a/src/reducers/dataReducer.js +++ b/src/reducers/dataReducer.js @@ -1,5 +1,5 @@ import { get } from 'lodash'; -import { setWith } from 'lodash/fp'; +import { setWith, assign } from 'lodash/fp'; import { actionTypes } from '../constants'; import { pathFromMeta, preserveValuesFromState } from '../utils/reducers'; @@ -59,11 +59,13 @@ export default function dataReducer(state = {}, action) { state, ); } + // Otherwise merge with existing data + const mergedData = assign(previousData, data); // Set data to state (with merge) immutabily (lodash/fp's setWith creates copy) return setWith( Object, meta.storeAs ? [meta.storeAs] : pathFromMeta(meta), - data, + mergedData, state, ); case DOCUMENT_MODIFIED: diff --git a/test/unit/reducers/dataReducer.spec.js b/test/unit/reducers/dataReducer.spec.js index 712a8878..20d02d27 100644 --- a/test/unit/reducers/dataReducer.spec.js +++ b/test/unit/reducers/dataReducer.spec.js @@ -88,7 +88,7 @@ describe('dataReducer', () => { `${collection}.${doc}.newData.field`, data[doc].newData.field, ); - expect(result).to.not.have.nested.property( + expect(result).to.have.nested.property( `${collection}.${doc}.originalData.some.val`, existingState[collection][doc].originalData.some.val, );