Skip to content

Commit b512c4a

Browse files
committed
adding tests
1 parent 7523985 commit b512c4a

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
import React from 'react';
2+
import { expect } from 'chai';
3+
import { screen, userEvent } from '@mongodb-js/testing-library-compass';
4+
import SavedDiagramsList from './saved-diagrams-list';
5+
import { renderWithStore } from '../../test/setup-store';
6+
import type { DataModelingStore } from '../../test/setup-store';
7+
import { DataModelStorageServiceProvider } from '../provider';
8+
import type { MongoDBDataModelDescription } from '../services/data-model-storage';
9+
10+
describe('SavedDiagramsList', function () {
11+
const renderSavedDiagramsList = ({
12+
loadAll = () => Promise.resolve([]),
13+
}: {
14+
loadAll?: () => Promise<MongoDBDataModelDescription[]>;
15+
} = {}) => {
16+
const mockDataModelStorage = {
17+
status: 'READY',
18+
error: null,
19+
items: [],
20+
save: () => {
21+
return Promise.resolve(false);
22+
},
23+
delete: () => {
24+
return Promise.resolve(false);
25+
},
26+
loadAll,
27+
load: () => {
28+
return Promise.resolve(null);
29+
},
30+
};
31+
return renderWithStore(
32+
<DataModelStorageServiceProvider storage={mockDataModelStorage}>
33+
<SavedDiagramsList />
34+
</DataModelStorageServiceProvider>,
35+
{
36+
services: {
37+
dataModelStorage: mockDataModelStorage,
38+
},
39+
}
40+
);
41+
};
42+
43+
context('when there are no saved diagrams', function () {
44+
let store: DataModelingStore;
45+
46+
beforeEach(function () {
47+
const result = renderSavedDiagramsList();
48+
store = result.store;
49+
});
50+
51+
it('shows the empty state', function () {
52+
expect(
53+
screen.getByText(
54+
'No saved Design, Visualize, and Evolve your Data Model'
55+
)
56+
).to.exist;
57+
});
58+
59+
it('allows to start adding diagrams', function () {
60+
const createDiagramButton = screen.getByRole('button', {
61+
name: 'Generate new diagram',
62+
});
63+
expect(store.getState().generateDiagramWizard.inProgress).to.be.false;
64+
expect(createDiagramButton).to.be.visible;
65+
userEvent.click(createDiagramButton);
66+
expect(store.getState().generateDiagramWizard.inProgress).to.be.true;
67+
});
68+
});
69+
70+
context('when there are diagrams', function () {
71+
let store: DataModelingStore;
72+
73+
beforeEach(function () {
74+
const result = renderSavedDiagramsList({
75+
loadAll: () =>
76+
Promise.resolve([
77+
{
78+
id: 'diagram-1',
79+
name: 'Diagram 1',
80+
},
81+
]),
82+
});
83+
store = result.store;
84+
});
85+
86+
it('shows the list of diagrams', function () {
87+
expect(screen.getByText('Diagram 1')).to.exist;
88+
});
89+
90+
it('allows to add another diagram', function () {
91+
const createDiagramButton = screen.getByRole('button', {
92+
name: 'Generate diagram',
93+
});
94+
expect(store.getState().generateDiagramWizard.inProgress).to.be.false;
95+
expect(createDiagramButton).to.be.visible;
96+
userEvent.click(createDiagramButton);
97+
expect(store.getState().generateDiagramWizard.inProgress).to.be.true;
98+
});
99+
});
100+
});

0 commit comments

Comments
 (0)