Skip to content

Commit 16b5fd6

Browse files
committed
fix tests
1 parent e545817 commit 16b5fd6

File tree

2 files changed

+62
-44
lines changed

2 files changed

+62
-44
lines changed

packages/compass-data-modeling/src/components/saved-diagrams-list.spec.tsx

Lines changed: 57 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -11,44 +11,62 @@ import type { DataModelingStore } from '../../test/setup-store';
1111
import { DataModelStorageServiceProvider } from '../provider';
1212
import type { MongoDBDataModelDescription } from '../services/data-model-storage';
1313

14-
describe('SavedDiagramsList', function () {
15-
const renderSavedDiagramsList = ({
16-
loadAll = () => Promise.resolve([]),
17-
}: {
18-
loadAll?: () => Promise<MongoDBDataModelDescription[]>;
19-
} = {}) => {
20-
const mockDataModelStorage = {
21-
status: 'READY',
22-
error: null,
23-
items: [],
24-
save: () => {
25-
return Promise.resolve(false);
26-
},
27-
delete: () => {
28-
return Promise.resolve(false);
29-
},
30-
loadAll,
31-
load: () => {
32-
return Promise.resolve(null);
33-
},
34-
};
35-
return renderWithStore(
36-
<DataModelStorageServiceProvider storage={mockDataModelStorage}>
37-
<SavedDiagramsList />
38-
</DataModelStorageServiceProvider>,
39-
{
40-
services: {
41-
dataModelStorage: mockDataModelStorage,
42-
},
43-
}
44-
);
14+
const storageItems: MongoDBDataModelDescription[] = [
15+
{
16+
id: '1',
17+
name: 'One',
18+
edits: [],
19+
},
20+
{
21+
id: '2',
22+
name: 'Two',
23+
edits: [],
24+
},
25+
{
26+
id: '3',
27+
name: 'Three',
28+
edits: [],
29+
},
30+
];
31+
32+
const renderSavedDiagramsList = ({
33+
items = storageItems,
34+
}: {
35+
items?: MongoDBDataModelDescription[];
36+
} = {}) => {
37+
const mockDataModelStorage = {
38+
status: 'READY',
39+
error: null,
40+
items,
41+
save: () => {
42+
return Promise.resolve(false);
43+
},
44+
delete: () => {
45+
return Promise.resolve(false);
46+
},
47+
loadAll: () => Promise.resolve(items),
48+
load: (id: string) => {
49+
return Promise.resolve(items.find((x) => x.id === id));
50+
},
4551
};
52+
return renderWithStore(
53+
<DataModelStorageServiceProvider storage={mockDataModelStorage}>
54+
<SavedDiagramsList />
55+
</DataModelStorageServiceProvider>,
56+
{
57+
services: {
58+
dataModelStorage: mockDataModelStorage,
59+
},
60+
}
61+
);
62+
};
4663

64+
describe('SavedDiagramsList', function () {
4765
context('when there are no saved diagrams', function () {
4866
let store: DataModelingStore;
4967

5068
beforeEach(async function () {
51-
const result = renderSavedDiagramsList();
69+
const result = renderSavedDiagramsList({ items: [] });
5270
store = result.store;
5371

5472
// wait till the empty list is loaded
@@ -78,15 +96,7 @@ describe('SavedDiagramsList', function () {
7896
let store: DataModelingStore;
7997

8098
beforeEach(async function () {
81-
const result = renderSavedDiagramsList({
82-
loadAll: () =>
83-
Promise.resolve([
84-
{
85-
id: 'diagram-1',
86-
name: 'Diagram 1',
87-
} as MongoDBDataModelDescription,
88-
]),
89-
});
99+
const result = renderSavedDiagramsList();
90100
store = result.store;
91101

92102
// wait till the list is loaded
@@ -95,8 +105,12 @@ describe('SavedDiagramsList', function () {
95105
});
96106
});
97107

98-
it('shows the list of diagrams', function () {
99-
expect(screen.getByText('Diagram 1')).to.exist;
108+
it('shows the list of diagrams', async function () {
109+
await waitFor(() => {
110+
expect(screen.getByText('One')).to.exist;
111+
expect(screen.getByText('Two')).to.exist;
112+
expect(screen.getByText('Three')).to.exist;
113+
});
100114
});
101115

102116
it('allows to add another diagram', function () {

packages/compass-data-modeling/src/components/saved-diagrams-list.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useCallback, useState } from 'react';
1+
import React, { useCallback, useEffect, useState } from 'react';
22
import { connect } from 'react-redux';
33
import { createNewDiagram } from '../store/generate-diagram-wizard';
44
import {
@@ -137,6 +137,10 @@ export const SavedDiagramsList: React.FunctionComponent<{
137137
const [sortControls, sortState] = useSortControls(sortBy);
138138
const sortedItems = useSortedItems(filteredItems, sortState);
139139

140+
useEffect(() => {
141+
setFilteredItems(items);
142+
}, [items]);
143+
140144
const onSearchItems = useCallback(
141145
(search: string) => {
142146
try {

0 commit comments

Comments
 (0)