saleor-dashboard/src/new-apps/components/AppDetailsPage/Header.test.tsx
Dawid dfb5f167d4
Migrate app details view (settings view) to new-apps (#3167)
* Migrate app details view to new-apps

* Fix data privacy card
2023-03-01 15:04:53 +01:00

112 lines
3.1 KiB
TypeScript

import { appDetails } from "@dashboard/new-apps/fixtures";
import { render } from "@testing-library/react";
import React from "react";
import Header from "./Header";
const mockHeaderOptions = jest.fn();
const mockTopNav = jest.fn();
const mockButton = jest.fn();
jest.mock("@dashboard/components/AppLayout/TopNav", () => ({
TopNav: props => {
mockTopNav(props);
return <>{props.children}</>;
},
}));
jest.mock("@saleor/macaw-ui/next", () => ({
Button: props => {
mockButton(props);
return <>{props.children}</>;
},
}));
jest.mock("../DeactivatedText", () => () => "deactivated");
jest.mock("react-intl", () => ({
useIntl: jest.fn(() => ({
formatMessage: jest.fn(x => x.defaultMessage),
})),
defineMessages: jest.fn(x => x),
FormattedMessage: ({ defaultMessage }) => <>{defaultMessage}</>,
}));
jest.mock("./HeaderOptions", () => props => {
mockHeaderOptions(props);
return <></>;
});
beforeEach(() => {
mockHeaderOptions.mockClear();
mockTopNav.mockClear();
mockButton.mockClear();
});
describe("Apps AppDetailsPage Header", () => {
it("displays app details options when active app data passed", () => {
// Arrange
const navigateToApp = jest.fn();
const onAppActivateOpen = jest.fn();
const onAppDeactivateOpen = jest.fn();
const onAppDeleteOpen = jest.fn();
// Act
render(
<Header
data={appDetails}
navigateToApp={navigateToApp}
onAppActivateOpen={onAppActivateOpen}
onAppDeactivateOpen={onAppDeactivateOpen}
onAppDeleteOpen={onAppDeleteOpen}
/>,
);
const title = render(mockTopNav.mock.calls[0][0].title);
// Assert
expect(mockHeaderOptions).toHaveBeenCalledWith({
data: appDetails,
onAppActivateOpen,
onAppDeactivateOpen,
onAppDeleteOpen,
});
expect(mockButton).toHaveBeenCalledWith(
expect.objectContaining({
onClick: navigateToApp,
}),
);
expect(mockTopNav).toHaveBeenCalled();
expect(title.container).toHaveTextContent(appDetails.name as string);
});
it("displays app details options when inactive app data passed", () => {
// Arrange
const navigateToApp = jest.fn();
const onAppActivateOpen = jest.fn();
const onAppDeactivateOpen = jest.fn();
const onAppDeleteOpen = jest.fn();
// Act
render(
<Header
data={{ ...appDetails, isActive: false }}
navigateToApp={navigateToApp}
onAppActivateOpen={onAppActivateOpen}
onAppDeactivateOpen={onAppDeactivateOpen}
onAppDeleteOpen={onAppDeleteOpen}
/>,
);
const title = render(mockTopNav.mock.calls[0][0].title);
// Assert
expect(mockHeaderOptions).toHaveBeenCalledWith({
data: { ...appDetails, isActive: false },
onAppActivateOpen,
onAppDeactivateOpen,
onAppDeleteOpen,
});
expect(mockButton).toHaveBeenCalledWith(
expect.objectContaining({
onClick: navigateToApp,
}),
);
expect(mockTopNav).toHaveBeenCalled();
expect(title.container).toHaveTextContent(`${appDetails.name} deactivated`);
});
});