From 280fccc14b13f2c4c73c8f3877558e7bc58eb446 Mon Sep 17 00:00:00 2001 From: Jarda Snajdr Date: Thu, 3 Nov 2022 19:55:09 +0100 Subject: [PATCH] Modify the settings object immutably --- .../editor/various/font-size-picker.test.js | 91 ++++++++++--------- 1 file changed, 50 insertions(+), 41 deletions(-) diff --git a/packages/e2e-tests/specs/editor/various/font-size-picker.test.js b/packages/e2e-tests/specs/editor/various/font-size-picker.test.js index c2f22bf83dcef..f7351450dabd5 100644 --- a/packages/e2e-tests/specs/editor/various/font-size-picker.test.js +++ b/packages/e2e-tests/specs/editor/various/font-size-picker.test.js @@ -102,50 +102,59 @@ describe( 'Font Size Picker', () => { describe( 'More font sizes', () => { beforeEach( async () => { await page.evaluate( () => { + // set a deep `path[]` property in object `obj` to `value`, immutably + function setDeep( obj, path, value ) { + function doSet( o, i ) { + if ( i < path.length ) { + const key = path[ i ]; + return { ...o, [ key ]: doSet( o[ key ], i + 1 ) }; + } + return value; + } + return doSet( obj, 0 ); + } + wp.data.dispatch( 'core/block-editor' ).updateSettings( - // eslint-disable-next-line no-undef - lodash.merge( + setDeep( wp.data.select( 'core/block-editor' ).getSettings(), - { - __experimentalFeatures: { - typography: { - fontSizes: { - default: [ - { - name: 'Tiny', - slug: 'tiny', - size: '11px', - }, - { - name: 'Small', - slug: 'small', - size: '13px', - }, - { - name: 'Medium', - slug: 'medium', - size: '20px', - }, - { - name: 'Large', - slug: 'large', - size: '36px', - }, - { - name: 'Extra Large', - slug: 'x-large', - size: '42px', - }, - { - name: 'Huge', - slug: 'huge', - size: '48px', - }, - ], - }, - }, + [ + '__experimentalFeatures', + 'typography', + 'fontSizes', + 'default', + ], + [ + { + name: 'Tiny', + slug: 'tiny', + size: '11px', }, - } + { + name: 'Small', + slug: 'small', + size: '13px', + }, + { + name: 'Medium', + slug: 'medium', + size: '20px', + }, + { + name: 'Large', + slug: 'large', + size: '36px', + }, + { + name: 'Extra Large', + slug: 'x-large', + size: '42px', + }, + { + name: 'Huge', + slug: 'huge', + size: '48px', + }, + ] ) ); } );