From 9a64f4a54a5892626f2f075fd51ec550902b8e54 Mon Sep 17 00:00:00 2001 From: bnechyporenko Date: Tue, 10 May 2022 12:03:29 +0200 Subject: [PATCH] Updated to use deep merge instead of shallow merge. Signed-off-by: bnechyporenko --- packages/core-plugin-api/package.json | 1 + .../src/extensions/extensions.test.tsx | 11 ++++++++++- packages/core-plugin-api/src/plugin/Plugin.tsx | 3 ++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json index 03ecdfab74..7c8e7dc1fa 100644 --- a/packages/core-plugin-api/package.json +++ b/packages/core-plugin-api/package.json @@ -37,6 +37,7 @@ "@backstage/types": "^1.0.0", "@backstage/version-bridge": "^1.0.1", "history": "^5.0.0", + "lodash": "^4.17.21", "prop-types": "^15.7.2", "react-router-dom": "6.0.0-beta.0", "zen-observable": "^0.8.15" diff --git a/packages/core-plugin-api/src/extensions/extensions.test.tsx b/packages/core-plugin-api/src/extensions/extensions.test.tsx index 5cb223cc31..28d84cae3e 100644 --- a/packages/core-plugin-api/src/extensions/extensions.test.tsx +++ b/packages/core-plugin-api/src/extensions/extensions.test.tsx @@ -44,6 +44,9 @@ const customPlugin = createPlugin({ id: 'custom-plugin', metadata: { pluginLabel: 'initial label', + table: { + tableHeader: 'table header', + }, }, }); @@ -178,7 +181,7 @@ describe('extensions', () => { it('should allow for the plugin to redefine default labels', async () => { customPlugin.reconfigure({ pluginLabel: 'new label', - }); + } as any); const CustomPluginExtension = customPlugin.provide( createReactExtension({ @@ -189,6 +192,9 @@ describe('extensions', () => { <>
{props.metadata?.pluginLabel} +
+

{props.metadata?.table.tableHeader}

+
); @@ -201,5 +207,8 @@ describe('extensions', () => { expect(updatedComponent.getByTestId('plugin-label')).toHaveTextContent( 'new label', ); + expect( + updatedComponent.getByTestId('plugin-table-summary'), + ).toHaveTextContent('table header'); }); }); diff --git a/packages/core-plugin-api/src/plugin/Plugin.tsx b/packages/core-plugin-api/src/plugin/Plugin.tsx index 61b8a5db8c..29eacde6ae 100644 --- a/packages/core-plugin-api/src/plugin/Plugin.tsx +++ b/packages/core-plugin-api/src/plugin/Plugin.tsx @@ -23,6 +23,7 @@ import { AnyMetadata, PluginFeatureFlagConfig, } from './types'; +import { merge } from 'lodash'; import { AnyApiFactory } from '../apis'; /** @@ -71,7 +72,7 @@ export class PluginImpl< } reconfigure(metadata: PluginMetadata): BackstagePlugin { - this.config.metadata = { ...this.config.metadata, ...metadata }; + this.config.metadata = merge(this.config.metadata, metadata); return this; }