From 3b14cec0b8e10fafcd36345476f6d7515de14b61 Mon Sep 17 00:00:00 2001 From: Jack Reed <phillipjreed@gmail.com> Date: Fri, 15 Feb 2019 16:52:31 -0700 Subject: [PATCH] Add back reducer UPDATE_VIEWPORT test and test window cleanup --- __tests__/src/reducers/viewers.test.js | 45 ++++++++++++++++++++++++++ src/state/reducers/viewers.js | 7 ++++ 2 files changed, 52 insertions(+) create mode 100644 __tests__/src/reducers/viewers.test.js diff --git a/__tests__/src/reducers/viewers.test.js b/__tests__/src/reducers/viewers.test.js new file mode 100644 index 000000000..9adc942f8 --- /dev/null +++ b/__tests__/src/reducers/viewers.test.js @@ -0,0 +1,45 @@ +import { viewersReducer } from '../../../src/state/reducers/viewers'; +import ActionTypes from '../../../src/state/actions/action-types'; + +describe('viewers reducer', () => { + it('should handle UPDATE_VIEWPORT', () => { + expect(viewersReducer({ + abc123: { + x: 1, + }, + def456: { + y: 1, + }, + }, { + type: ActionTypes.UPDATE_VIEWPORT, + windowId: 'abc123', + payload: { x: 0, y: 1, zoom: 0.5 }, + })).toEqual({ + abc123: { + x: 0, + y: 1, + zoom: 0.5, + }, + def456: { + y: 1, + }, + }); + }); + it('should handle REMOVE_WINDOW', () => { + expect(viewersReducer({ + abc123: { + foo: 'bar', + }, + def456: { + foo: 'bar', + }, + }, { + type: ActionTypes.REMOVE_WINDOW, + windowId: 'abc123', + })).toEqual({ + def456: { + foo: 'bar', + }, + }); + }); +}); diff --git a/src/state/reducers/viewers.js b/src/state/reducers/viewers.js index dccd3dbdf..e31e42d03 100644 --- a/src/state/reducers/viewers.js +++ b/src/state/reducers/viewers.js @@ -12,6 +12,13 @@ export const viewersReducer = (state = {}, action) => { ...action.payload, }, }; + case ActionTypes.REMOVE_WINDOW: + return Object.keys(state).reduce((object, key) => { + if (key !== action.windowId) { + object[key] = state[key]; // eslint-disable-line no-param-reassign + } + return object; + }, {}); default: return state; } -- GitLab