Skip to content

Commit 2ef8837

Browse files
committed
update test helpers
1 parent d071d47 commit 2ef8837

File tree

5 files changed

+56
-70
lines changed

5 files changed

+56
-70
lines changed

packages/compass-data-modeling/src/components/diagram-editor.spec.tsx

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,20 @@ const mockDiagramming = {
2727

2828
import React from 'react';
2929
import { expect } from 'chai';
30-
import { screen, waitFor } from '@mongodb-js/testing-library-compass';
30+
import {
31+
createPluginTestHelpers,
32+
screen,
33+
waitFor,
34+
} from '@mongodb-js/testing-library-compass';
3135
import DiagramEditor from './diagram-editor';
32-
import { renderWithOpenedDiagramStore } from '../../test/setup-store';
3336
import type { DataModelingStore } from '../../test/setup-store';
34-
import { DataModelStorageServiceProvider } from '../provider';
3537
import type {
3638
Edit,
3739
MongoDBDataModelDescription,
3840
} from '../services/data-model-storage';
3941
import { DiagramProvider } from '@mongodb-js/diagramming';
42+
import { CompassDataModelingPlugin } from '..';
43+
import { openDiagram } from '../store/diagram';
4044

4145
const storageItems: MongoDBDataModelDescription[] = [
4246
{
@@ -107,7 +111,7 @@ const storageItems: MongoDBDataModelDescription[] = [
107111
},
108112
];
109113

110-
const renderDiagramEditor = async ({
114+
const renderDiagramEditor = ({
111115
items = storageItems,
112116
renderedItem = items[0],
113117
}: {
@@ -129,28 +133,35 @@ const renderDiagramEditor = async ({
129133
return Promise.resolve(items.find((x) => x.id === id) ?? null);
130134
},
131135
};
132-
const result = await renderWithOpenedDiagramStore(
133-
<DataModelStorageServiceProvider storage={mockDataModelStorage}>
134-
<DiagramProvider fitView>
135-
<DiagramEditor />
136-
</DiagramProvider>
137-
</DataModelStorageServiceProvider>,
138-
{
136+
137+
const { renderWithConnections } = createPluginTestHelpers(
138+
CompassDataModelingPlugin.provider.withMockServices({
139139
services: {
140140
dataModelStorage: mockDataModelStorage,
141141
},
142-
},
143-
renderedItem
142+
}),
143+
{
144+
namespace: 'foo.bar',
145+
} as any
146+
);
147+
const {
148+
plugin: { store },
149+
} = renderWithConnections(
150+
<DiagramProvider fitView>
151+
<DiagramEditor />
152+
</DiagramProvider>
144153
);
145-
return result;
154+
store.dispatch(openDiagram(renderedItem));
155+
156+
return { store };
146157
};
147158

148159
describe('DiagramEditor', function () {
149160
let store: DataModelingStore;
150161

151162
context('with initial diagram', function () {
152163
beforeEach(async function () {
153-
const result = await renderDiagramEditor({
164+
const result = renderDiagramEditor({
154165
renderedItem: storageItems[1],
155166
});
156167
store = result.store;
@@ -181,7 +192,7 @@ describe('DiagramEditor', function () {
181192

182193
context('with existing diagram', function () {
183194
beforeEach(async function () {
184-
const result = await renderDiagramEditor({
195+
const result = renderDiagramEditor({
185196
renderedItem: storageItems[0],
186197
});
187198
store = result.store;

packages/compass-data-modeling/src/components/diagram-editor.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ const DiagramEditor: React.FunctionComponent<{
282282
let content;
283283

284284
if (step === 'NO_DIAGRAM_SELECTED') {
285-
throw new Error('Unexpected');
285+
return null;
286286
}
287287

288288
if (step === 'ANALYZING') {

packages/compass-data-modeling/src/index.spec.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import React from 'react';
22
import { expect } from 'chai';
33
import { render } from '@mongodb-js/testing-library-compass';
4-
import { WorkspaceTab } from './index';
4+
import { CompassDataModelingPlugin } from './index';
55

66
describe('Compass Plugin', function () {
7-
const Plugin = WorkspaceTab.provider.withMockServices({});
7+
const Plugin = CompassDataModelingPlugin.provider.withMockServices({});
88

99
it('renders a Plugin', function () {
1010
expect(() =>
1111
render(
1212
<Plugin>
13-
<WorkspaceTab.content />
13+
<CompassDataModelingPlugin.content />
1414
</Plugin>
1515
)
1616
).to.not.throw();

packages/compass-data-modeling/src/index.ts

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,28 @@ import { dataModelStorageServiceLocator } from './provider';
1111
import { activateDataModelingStore } from './store';
1212
import { PluginTabTitleComponent, WorkspaceName } from './plugin-tab-title';
1313

14-
export const WorkspaceTab: WorkspacePlugin<typeof WorkspaceName> = {
15-
name: WorkspaceName,
16-
provider: registerCompassPlugin(
17-
{
18-
name: 'DataModeling',
19-
component: function DataModelingProvider({ children }) {
20-
return React.createElement(React.Fragment, null, children);
21-
},
22-
activate: activateDataModelingStore,
14+
const CompassDataModelingPluginProvider = registerCompassPlugin(
15+
{
16+
name: 'DataModeling',
17+
component: function DataModelingProvider({ children }) {
18+
return React.createElement(React.Fragment, null, children);
2319
},
24-
{
25-
preferences: preferencesLocator,
26-
connections: connectionsLocator,
27-
instanceManager: mongoDBInstancesManagerLocator,
28-
dataModelStorage: dataModelStorageServiceLocator,
29-
track: telemetryLocator,
30-
logger: createLoggerLocator('COMPASS-DATA-MODELING'),
31-
}
32-
),
33-
content: DataModelingComponent,
34-
header: PluginTabTitleComponent,
35-
};
20+
activate: activateDataModelingStore,
21+
},
22+
{
23+
preferences: preferencesLocator,
24+
connections: connectionsLocator,
25+
instanceManager: mongoDBInstancesManagerLocator,
26+
dataModelStorage: dataModelStorageServiceLocator,
27+
track: telemetryLocator,
28+
logger: createLoggerLocator('COMPASS-DATA-MODELING'),
29+
}
30+
);
31+
32+
export const CompassDataModelingPlugin: WorkspacePlugin<typeof WorkspaceName> =
33+
{
34+
name: WorkspaceName,
35+
provider: CompassDataModelingPluginProvider,
36+
content: DataModelingComponent,
37+
header: PluginTabTitleComponent,
38+
};

packages/compass-data-modeling/test/setup-store.tsx

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
import React from 'react';
2-
import {
3-
renderWithConnections,
4-
waitFor,
5-
} from '@mongodb-js/testing-library-compass';
2+
import { renderWithConnections } from '@mongodb-js/testing-library-compass';
63
import { createActivateHelpers } from '@mongodb-js/compass-app-registry';
74
import { createNoopTrack } from '@mongodb-js/compass-telemetry/provider';
85
import { createNoopLogger } from '@mongodb-js/compass-logging/provider';
@@ -12,9 +9,6 @@ import { activateDataModelingStore } from '../src/store';
129
import type { DataModelingStoreServices } from '../src/store';
1310
import { noopDataModelStorageService } from '../src/provider';
1411
import { Provider } from 'react-redux';
15-
import { openDiagram } from '../src/store/diagram';
16-
import { expect } from 'chai';
17-
import type { MongoDBDataModelDescription } from '../src/services/data-model-storage';
1812

1913
type ConnectionInfoWithMockData = ConnectionInfo & {
2014
databases: Array<{
@@ -203,25 +197,3 @@ export const renderWithStore = (
203197
);
204198
return { ...renderResult, store };
205199
};
206-
export const renderWithOpenedDiagramStore = async (
207-
component: JSX.Element,
208-
{
209-
services = {},
210-
connections = testConnections,
211-
}: {
212-
services?: Partial<DataModelingStoreServices>;
213-
connections?: ConnectionInfoWithMockData[];
214-
} = {},
215-
diagram: MongoDBDataModelDescription
216-
) => {
217-
const store = setupStore(services, connections);
218-
store.dispatch(openDiagram(diagram));
219-
await waitFor(() => {
220-
expect(store.getState().diagram?.edits.current).to.have.lengthOf(1);
221-
});
222-
const renderResult = renderWithConnections(
223-
<Provider store={store}>{component}</Provider>,
224-
{ connections }
225-
);
226-
return { ...renderResult, store };
227-
};

0 commit comments

Comments
 (0)