Skip to content

Commit 02d090c

Browse files
committed
add unit tests
1 parent c83c9e7 commit 02d090c

File tree

3 files changed

+59
-27
lines changed

3 files changed

+59
-27
lines changed

packages/compass-collection/src/components/mock-data-generator-modal/constants.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import { expect } from 'chai';
2+
import React from 'react';
3+
import { render, screen } from '@mongodb-js/testing-library-compass';
4+
import Sinon from 'sinon';
5+
import MockDataGeneratorModal from './mock-data-generator-modal';
6+
import { MockDataGeneratorSteps } from './types.ts';
7+
8+
describe('MockDataGeneratorModal', function () {
9+
const sandbox = Sinon.createSandbox();
10+
let setIsOpen: Sinon.SinonSpy;
11+
12+
beforeEach(function () {
13+
setIsOpen = sandbox.spy();
14+
});
15+
16+
afterEach(function () {
17+
sandbox.restore();
18+
});
19+
20+
const renderModal = () => {
21+
return render(
22+
<MockDataGeneratorModal isOpen={true} setIsOpen={setIsOpen} />
23+
);
24+
};
25+
26+
it('renders the modal when isOpen is true', function () {
27+
renderModal();
28+
29+
expect(screen.getByTestId('generate-mock-data-modal')).to.exist;
30+
});
31+
32+
it('calls setIsOpen(false) when the modal is closed', function () {
33+
renderModal();
34+
35+
screen.getByLabelText('Close modal').click();
36+
37+
expect(setIsOpen.calledOnceWith(false)).to.be.true;
38+
});
39+
40+
it('calls setIsOpen(false) when the cancel button is clicked', function () {
41+
renderModal();
42+
43+
screen.getByText('Cancel').click();
44+
45+
expect(setIsOpen.calledOnceWith(false)).to.be.true;
46+
});
47+
48+
it('renders the first step by default', function () {
49+
renderModal();
50+
51+
expect(
52+
screen.getByTestId(
53+
`generate-mock-data-step-${MockDataGeneratorSteps.AI_DISCLAIMER}`
54+
)
55+
).to.exist;
56+
});
57+
});

packages/compass-collection/src/components/mock-data-generator-modal/mock-generator-modal.tsx renamed to packages/compass-collection/src/components/mock-data-generator-modal/mock-data-generator-modal.tsx

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
import React, { useState } from 'react';
22

3-
import { css } from '@mongodb-js/compass-components';
3+
import { css, ModalBody, ModalHeader } from '@mongodb-js/compass-components';
44

55
import {
66
Button,
77
Modal,
8-
ModalHeader,
9-
ModalBody,
108
ModalFooter,
119
ButtonVariant,
1210
} from '@mongodb-js/compass-components';
1311
import { MockDataGeneratorSteps } from './types';
14-
import { DEFAULT_OUTPUT_DOCS_COUNT } from './constants';
1512

1613
const footerStyles = css`
1714
flex-direction: row;
@@ -33,28 +30,15 @@ const MockDataGeneratorModal = ({ isOpen, setIsOpen }: Props) => {
3330
const [currentStep, setCurrentStep] = useState<MockDataGeneratorSteps>(
3431
MockDataGeneratorSteps.AI_DISCLAIMER
3532
);
36-
const [rawSchema, setRawSchema] = useState<string | null>(null);
37-
const [fakerSchema, setFakerSchema] = useState<string | null>(null);
38-
const [outputDocsCount, setOutputDocsCount] = useState<number>(
39-
DEFAULT_OUTPUT_DOCS_COUNT
40-
);
41-
const [validationRules, setValidationRules] = useState<string | null>(null);
42-
const [sampleDoc, setSampleDoc] = useState<string | null>(null);
4333

4434
const resetState = () => {
4535
setCurrentStep(MockDataGeneratorSteps.AI_DISCLAIMER);
46-
setRawSchema(null);
47-
setFakerSchema(null);
48-
setOutputDocsCount(DEFAULT_OUTPUT_DOCS_COUNT);
49-
setValidationRules(null);
50-
setSampleDoc(null);
5136
};
5237

5338
const onNext = () => {
5439
if (currentStep < MockDataGeneratorSteps.GENERATE_DATA) {
5540
setCurrentStep(currentStep + 1);
5641
} else {
57-
// Final step, close the modal
5842
setIsOpen(false);
5943
resetState();
6044
}
@@ -78,16 +62,8 @@ const MockDataGeneratorModal = ({ isOpen, setIsOpen }: Props) => {
7862
>
7963
<ModalHeader title="Generate Mock Data" />
8064
<ModalBody>
81-
{currentStep === MockDataGeneratorSteps.AI_DISCLAIMER && <div></div>}
82-
{currentStep === MockDataGeneratorSteps.SCHEMA_CONFIRMATION && (
83-
<div></div>
84-
)}
85-
{currentStep === MockDataGeneratorSteps.SCHEMA_EDITOR && <div></div>}
86-
{currentStep === MockDataGeneratorSteps.DOCUMENT_COUNT && <div></div>}
87-
{currentStep === MockDataGeneratorSteps.PREVIEW_DATA && <div></div>}
88-
{currentStep === MockDataGeneratorSteps.GENERATE_DATA && <div></div>}
65+
<div data-testid={`generate-mock-data-step-${currentStep}`} />
8966
</ModalBody>
90-
9167
<ModalFooter className={footerStyles}>
9268
<Button onClick={onBack}>Back</Button>
9369
<div className={rightButtonsStyles}>

0 commit comments

Comments
 (0)