monday-ui-react-core
Version:
Official monday.com UI resources for application development in React.js
91 lines (84 loc) • 2.35 kB
JavaScript
import React from "react";
import { fireEvent, render, cleanup } from "@testing-library/react";
import { act } from "@testing-library/react-hooks";
import Tipseen from "../Tipseen";
import renderer from "react-test-renderer";
import { TIPSEEN_CLOSE_BUTTON_ARIA_LABEL } from "../TipseenConstants";
jest.mock("react-transition-group", () => {
const FakeTransition = jest.fn(({ children }) => children);
const FakeSwitchTransition = jest.fn(({ children }) => children);
const FakeCSSTransition = jest.fn(({ children }) => children);
return {
CSSTransition: FakeCSSTransition,
Transition: FakeTransition,
SwitchTransition: FakeSwitchTransition
};
});
jest.useFakeTimers();
const renderComponent = props => {
return render(
<Tipseen {...props}>
<div />
</Tipseen>
);
};
describe("Tipseen tests", () => {
describe("Snapshot Tests", () => {
it("renders correctly", () => {
const tree = renderer
.create(
<Tipseen>
<div />
</Tipseen>
)
.toJSON();
expect(tree).toMatchSnapshot();
});
it("renders correctly with title", () => {
const tree = renderer
.create(
<Tipseen title="mock title">
<div />
</Tipseen>
)
.toJSON();
expect(tree).toMatchSnapshot();
});
it("renders correctly without close button", () => {
const tree = renderer
.create(
<Tipseen isCloseButtonHidden>
<div />
</Tipseen>
)
.toJSON();
expect(tree).toMatchSnapshot();
});
it("renders correctly with custom width", () => {
const tree = renderer
.create(
<Tipseen width={100}>
<div />
</Tipseen>
)
.toJSON();
expect(tree).toMatchSnapshot();
});
});
describe("Integration Tests", () => {
afterEach(() => {
cleanup();
});
it("call onClose function when click on close button", () => {
const onClickMock = jest.fn();
const tipseen = renderComponent({
onClose: onClickMock
});
const closeButton = tipseen.getByLabelText(TIPSEEN_CLOSE_BUTTON_ARIA_LABEL);
act(() => {
fireEvent.click(closeButton);
});
expect(onClickMock.mock.calls.length).toBe(1);
});
});
});