Skip to content

Commit

Permalink
test: add unit tests for RequestTemplate component
Browse files Browse the repository at this point in the history
  • Loading branch information
rahulbarwal committed Oct 30, 2024
1 parent 764d8f3 commit 9a48f05
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 7 deletions.
63 changes: 63 additions & 0 deletions app/client/src/pages/Templates/Template/RequestTemplate.test.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import { createMessage } from "@appsmith/ads-old";
import "@testing-library/jest-dom";
import { fireEvent, render } from "@testing-library/react";
import {
REQUEST_BUILDING_BLOCK,
REQUEST_TEMPLATE,
} from "ee/constants/messages";
import AnalyticsUtil from "ee/utils/AnalyticsUtil";
import { unitTestBaseMockStore } from "layoutSystems/common/dropTarget/unitTestUtils";
import React from "react";
import { Provider } from "react-redux";
import configureStore from "redux-mock-store";
import { lightTheme } from "selectors/themeSelectors";
import { ThemeProvider } from "styled-components";
import RequestTemplate, {
REQUEST_TEMPLATE_URL,
type RequestTemplateProps,
} from "./RequestTemplate";
const mockStore = configureStore([]);

const BaseComponentRender = (
props: RequestTemplateProps,
storeToUse = unitTestBaseMockStore,
) => (
<Provider store={mockStore(storeToUse)}>
<ThemeProvider theme={lightTheme}>
<RequestTemplate {...props} />
</ThemeProvider>
</Provider>
);

describe("RequestTemplate", () => {
it("should display correct message based on isBuildingBlock prop", () => {
const { getByText } = render(
BaseComponentRender({ isBuildingBlock: true }),
);

expect(
getByText(createMessage(REQUEST_BUILDING_BLOCK)),
).toBeInTheDocument();
});
it("should open REQUEST_TEMPLATE_URL in a new window when button is clicked", () => {
const openSpy = jest.spyOn(window, "open");
const { getByText } = render(
BaseComponentRender({ isBuildingBlock: false }),
);
const button = getByText(createMessage(REQUEST_TEMPLATE));

fireEvent.click(button);
expect(openSpy).toHaveBeenCalledWith(REQUEST_TEMPLATE_URL);
});

it('should trigger AnalyticsUtil logEvent with "REQUEST_NEW_TEMPLATE" when button is clicked', () => {
const logEventSpy = jest.spyOn(AnalyticsUtil, "logEvent");
const { getByText } = render(
BaseComponentRender({ isBuildingBlock: false }),
);
const button = getByText(createMessage(REQUEST_TEMPLATE));

fireEvent.click(button);
expect(logEventSpy).toHaveBeenCalledWith("REQUEST_NEW_TEMPLATE");
});
});
14 changes: 7 additions & 7 deletions app/client/src/pages/Templates/Template/RequestTemplate.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import React from "react";
import styled from "styled-components";
import { Text, TextType } from "@appsmith/ads-old";
import { Button } from "@appsmith/ads";
import { Text, TextType } from "@appsmith/ads-old";
import RequestTemplateSvg from "assets/images/request-template.svg";
import {
COULDNT_FIND_TEMPLATE,
createMessage,
COULDNT_FIND_TEMPLATE_DESCRIPTION,
REQUEST_TEMPLATE,
createMessage,
REQUEST_BUILDING_BLOCK,
REQUEST_TEMPLATE,
} from "ee/constants/messages";
import AnalyticsUtil from "ee/utils/AnalyticsUtil";
import React from "react";
import styled from "styled-components";

const Wrapper = styled.div`
border: 1px solid var(--ads-v2-color-border);
Expand Down Expand Up @@ -48,10 +48,10 @@ const StyledImage = styled.img`
border-radius: var(--ads-v2-border-radius);
`;

const REQUEST_TEMPLATE_URL =
export const REQUEST_TEMPLATE_URL =
"https://app.appsmith.com/app/request-templates/request-list-6241c12fc99df2369931a714";

interface RequestTemplateProps {
export interface RequestTemplateProps {
isBuildingBlock?: boolean;
}

Expand Down

0 comments on commit 9a48f05

Please sign in to comment.