From 66361b8b76cee5341c12540de43c651820bac847 Mon Sep 17 00:00:00 2001 From: mortalYoung Date: Thu, 20 Oct 2022 11:53:55 +0800 Subject: [PATCH 1/2] fix: fix switch panels between problem and output --- src/services/workbench/panelService.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/services/workbench/panelService.ts b/src/services/workbench/panelService.ts index e330a5bcb..e19fbc698 100644 --- a/src/services/workbench/panelService.ts +++ b/src/services/workbench/panelService.ts @@ -1,6 +1,7 @@ import 'reflect-metadata'; import { singleton, container } from 'tsyringe'; import { editor as MonacoEditor } from 'monaco-editor'; +import { StandaloneEditor } from 'monaco-editor/esm/vs/editor/standalone/browser/standaloneCodeEditor'; import { cloneDeepWith, cloneDeep } from 'lodash'; import pickBy from 'lodash/pickBy'; import { Component } from 'mo/react'; @@ -194,7 +195,7 @@ export class PanelService extends Component implements IPanelService { if ( value && typeof value === 'object' && - value.constructor.name === 'StandaloneEditor' + value instanceof StandaloneEditor ) { return value; } From 35514fc1be89312135b27974ea58fa0461502cc4 Mon Sep 17 00:00:00 2001 From: mortalYoung Date: Thu, 20 Oct 2022 14:02:18 +0800 Subject: [PATCH 2/2] test: update test --- src/services/__tests__/panelService.test.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/services/__tests__/panelService.test.ts b/src/services/__tests__/panelService.test.ts index 2759c5107..8ab7b7484 100644 --- a/src/services/__tests__/panelService.test.ts +++ b/src/services/__tests__/panelService.test.ts @@ -1,6 +1,7 @@ import 'reflect-metadata'; import { container } from 'tsyringe'; import { PanelService } from '../workbench/panelService'; +import { StandaloneEditor } from 'monaco-editor/esm/vs/editor/standalone/browser/standaloneCodeEditor'; import { PanelEvent } from 'mo/model/workbench/panel'; import { expectLoggerErrorToBeCalled } from '@test/utils'; import { modules } from '../builtinService/const'; @@ -13,6 +14,15 @@ const restore = modules.builtInPanelToolboxReStore(); const panelService = container.resolve(PanelService); +jest.mock( + 'monaco-editor/esm/vs/editor/standalone/browser/standaloneCodeEditor', + () => { + return { + StandaloneEditor: class {}, + }; + } +); + describe('The PanelService test', () => { afterEach(() => { panelService.reset(); @@ -128,20 +138,20 @@ describe('The PanelService test', () => { }); test('Should NOT clone StandaloneEditor when get the panel', () => { - class StandaloneEditor {} - const standaloneEditor = new StandaloneEditor(); panelService.setState({ data: [ { ...paneOutput, - outputEditorInstance: standaloneEditor, + outputEditorInstance: new StandaloneEditor(), } as any, ], }); const target = panelService.getPanel(paneOutput.id); expect(target).toEqual(expect.objectContaining(paneOutput)); - expect((target as any).outputEditorInstance).toBe(standaloneEditor); + expect((target as any).outputEditorInstance).toBeInstanceOf( + StandaloneEditor + ); }); test('Should support to active a exist panel', () => {