From 9e2b06649cf50953cb6f67643329e78e97b42337 Mon Sep 17 00:00:00 2001 From: gitstart Date: Wed, 26 Apr 2023 03:07:02 +0000 Subject: [PATCH] fix: field named conditions breaking role checkboxes Co-authored-by: raph941 <45232708+raph941@users.noreply.github.com> --- .../utils/tests/updateValues.test.js | 27 ++++++++++++++++++- .../Permissions/utils/updateValues.js | 6 ++--- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/packages/core/admin/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/tests/updateValues.test.js b/packages/core/admin/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/tests/updateValues.test.js index 6d249f1eef..f00d15b697 100644 --- a/packages/core/admin/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/tests/updateValues.test.js +++ b/packages/core/admin/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/tests/updateValues.test.js @@ -1,7 +1,7 @@ import updateValues from '../updateValues'; describe('ADMIN | COMPONENTS | Permissions | utils | updateValues', () => { - it('should not the conditions values of given object', () => { + it('should not update the conditions values of given object', () => { const simpleObject = { properties: { enabled: true, @@ -18,6 +18,31 @@ describe('ADMIN | COMPONENTS | Permissions | utils | updateValues', () => { expect(updateValues(simpleObject, false)).toEqual(expected); }); + it('should update the conditions values if they are fields names', () => { + const simpleObject = { + conditions: 'test', + properties: { + fields: { + description: false, + restaurant: false, + conditions: false, + }, + }, + }; + const expected = { + conditions: 'test', + properties: { + fields: { + description: true, + restaurant: true, + conditions: true, + }, + }, + }; + + expect(updateValues(simpleObject, true)).toEqual(expected); + }); + it('set the leafs of an object with the second argument passed to the function', () => { const complexeObject = { conditions: 'test', diff --git a/packages/core/admin/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/updateValues.js b/packages/core/admin/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/updateValues.js index c27f445f69..250d5615da 100644 --- a/packages/core/admin/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/updateValues.js +++ b/packages/core/admin/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/updateValues.js @@ -8,18 +8,18 @@ import isObject from 'lodash/isObject'; * of an object. * This utility is very helpful when dealing with parent<>children checkboxes */ -const updateValues = (obj, valueToSet) => { +const updateValues = (obj, valueToSet, isFieldUpdate = false) => { return Object.keys(obj).reduce((acc, current) => { const currentValue = obj[current]; - if (current === 'conditions') { + if (current === 'conditions' && !isFieldUpdate) { acc[current] = currentValue; return acc; } if (isObject(currentValue)) { - return { ...acc, [current]: updateValues(currentValue, valueToSet) }; + return { ...acc, [current]: updateValues(currentValue, valueToSet, current === 'fields') }; } acc[current] = valueToSet;