All files / src/utils flattenReducers.js

100% Statements 12/12
100% Branches 5/5
100% Functions 3/3
100% Lines 12/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25  5x 5x 5x   5x 27x 27x 27x 90x 36x   90x 36x       27x              
export default function flattenReducers(reducerA, reducerB) {
  const initialStateA = reducerA();
  const initialStateB = reducerB();
  const initialState = { ...initialStateA, ...initialStateB };
 
  return function(state = initialState, action) {
    const stateA = {};
    const stateB = {};
    Object.keys(state).forEach(key => {
      if (initialStateA[key]) {
        stateA[key] = state[key];
      }
      if (initialStateB[key]) {
        stateB[key] = state[key];
      }
    });
 
    return {
      ...state,
      ...reducerA(stateA, action),
      ...reducerB(stateB, action),
    };
  };
}