From e38a020050e4c166e65f2c0faa4987872c21b120 Mon Sep 17 00:00:00 2001 From: Gabe Hernandez Date: Tue, 9 Mar 2021 15:38:37 +0000 Subject: [PATCH] fix deleting host breaking host table (#423) --- frontend/redux/nodes/entities/base/config.js | 3 ++- .../redux/nodes/entities/base/config_reducer.tests.js | 2 ++ frontend/redux/nodes/entities/base/helpers.js | 6 +++++- frontend/redux/nodes/entities/base/helpers.tests.js | 9 ++++++++- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/frontend/redux/nodes/entities/base/config.js b/frontend/redux/nodes/entities/base/config.js index a1b6cebc94..deab10625d 100644 --- a/frontend/redux/nodes/entities/base/config.js +++ b/frontend/redux/nodes/entities/base/config.js @@ -1,5 +1,5 @@ import BaseConfig from 'redux/nodes/entities/base/base_config'; -import { entitiesExceptID } from 'redux/nodes/entities/base/helpers'; +import { entitiesExceptID, orderExceptId } from 'redux/nodes/entities/base/helpers'; class ReduxConfig extends BaseConfig { get actions () { @@ -56,6 +56,7 @@ class ReduxConfig extends BaseConfig { data: { ...entitiesExceptID(state.data, payload.data), }, + originalOrder: orderExceptId(state.originalOrder, payload.data), }; } case actionTypes.CREATE_FAILURE: diff --git a/frontend/redux/nodes/entities/base/config_reducer.tests.js b/frontend/redux/nodes/entities/base/config_reducer.tests.js index 839ac891cf..29a7e75b54 100644 --- a/frontend/redux/nodes/entities/base/config_reducer.tests.js +++ b/frontend/redux/nodes/entities/base/config_reducer.tests.js @@ -9,6 +9,7 @@ describe('ReduxConfig - reducer', () => { data: { [userStub.id]: userStub, }, + originalOrder: [userStub.id], }; describe('creating an entity', () => { @@ -69,6 +70,7 @@ describe('ReduxConfig - reducer', () => { loading: false, errors: {}, data: {}, + originalOrder: [], }); }); }); diff --git a/frontend/redux/nodes/entities/base/helpers.js b/frontend/redux/nodes/entities/base/helpers.js index 76d11ff3b3..eef0d4c094 100644 --- a/frontend/redux/nodes/entities/base/helpers.js +++ b/frontend/redux/nodes/entities/base/helpers.js @@ -6,6 +6,10 @@ export const entitiesExceptID = (entities, id) => { }); }; +export const orderExceptId = (originalOrder, id) => { + return originalOrder.filter(entitiesId => entitiesId !== id); +}; + const formatServerErrors = (errors) => { if (!errors || !errors.length) { return {}; @@ -35,4 +39,4 @@ export const formatErrorResponse = (errorResponse) => { }; }; -export default { entitiesExceptID, formatErrorResponse }; +export default { entitiesExceptID, orderExceptId, formatErrorResponse }; diff --git a/frontend/redux/nodes/entities/base/helpers.tests.js b/frontend/redux/nodes/entities/base/helpers.tests.js index ce092336cd..e03c1ba376 100644 --- a/frontend/redux/nodes/entities/base/helpers.tests.js +++ b/frontend/redux/nodes/entities/base/helpers.tests.js @@ -1,4 +1,4 @@ -import { entitiesExceptID, formatErrorResponse } from './helpers'; +import { entitiesExceptID, orderExceptId, formatErrorResponse } from './helpers'; describe('reduxConfig - helpers', () => { describe('#entitiesExceptID', () => { @@ -24,6 +24,13 @@ describe('reduxConfig - helpers', () => { }); }); + describe('#orderExceptId', () => { + it('returns a new orderId array with the deleted entityID no longer in this array', () => { + const originalOrder = [1, 2, 3, 4]; + expect(orderExceptId(originalOrder, 3)).toEqual([1, 2, 4]); + }); + }); + describe('#formatErrorResponse', () => { it('converts the error response to an object for redux state', () => { const errors = [