mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2025-12-23 02:41:39 +00:00
* Upgrade packages to enable npm i with node 18 * Fix crypto and querystring issue * Fix webpack errors during npm start * Upgrade monaco editor. Fix alias in webconfig * Remove deprecated file-loader. Upgrade webpack to latest. * Fix format * Upgrade webpack, eslint and typescript * Update p-retry and fluentui packages * Revert monaco package upgrade * Fix notebook compile errors * Fix lint errors * Update jest snapshots * Fix unit tests * Update node version to 18 * Fix compile error * Fix compile error * Fix format * Turn off warning overlay for webpack devServer * Fix format * Re-add monaco webpack plugin and upgrade monaco-editor * Update package-lock.json * Fix build issue * Move MonacoWebpackPlugin to previous place in webpack.config.js * update package-lock.json * Fix package-lock.json * Update package-lock.json * Fix export ChoiceItem not found warning for self serve. Remove warning turn off in webpack config. * Update checkout and setup actions in for ci tests * Disable Gallery callout * Fix disable gallery header * Totally disable New gallery callout * Upgrade all github actions to latest
193 lines
5.5 KiB
TypeScript
193 lines
5.5 KiB
TypeScript
import { Checkbox, DefaultButton, IconButton, PrimaryButton, TextField } from "@fluentui/react";
|
|
import Explorer from "Explorer/Explorer";
|
|
import { QueryCopilotFeedbackModal } from "Explorer/QueryCopilot/Modal/QueryCopilotFeedbackModal";
|
|
import { useCopilotStore } from "Explorer/QueryCopilot/QueryCopilotContext";
|
|
import { SubmitFeedback } from "Explorer/QueryCopilot/Shared/QueryCopilotClient";
|
|
import { getUserEmail } from "Utils/UserUtils";
|
|
import { shallow } from "enzyme";
|
|
import React from "react";
|
|
|
|
jest.mock("Utils/UserUtils");
|
|
(getUserEmail as jest.Mock).mockResolvedValue("test@email.com");
|
|
|
|
jest.mock("Explorer/QueryCopilot/Shared/QueryCopilotClient");
|
|
SubmitFeedback as jest.Mock;
|
|
|
|
jest.mock("Explorer/QueryCopilot/QueryCopilotContext");
|
|
const mockUseCopilotStore = useCopilotStore as jest.Mock;
|
|
const mockReturnValue = {
|
|
generatedQuery: "test query",
|
|
userPrompt: "test prompt",
|
|
likeQuery: false,
|
|
showFeedbackModal: false,
|
|
closeFeedbackModal: jest.fn,
|
|
setHideFeedbackModalForLikedQueries: jest.fn,
|
|
};
|
|
|
|
describe("Query Copilot Feedback Modal snapshot test", () => {
|
|
beforeEach(() => {
|
|
mockUseCopilotStore.mockReturnValue(mockReturnValue);
|
|
jest.clearAllMocks();
|
|
});
|
|
it("shoud render and match snapshot", () => {
|
|
mockUseCopilotStore.mockReturnValue({
|
|
...mockReturnValue,
|
|
showFeedbackModal: true,
|
|
});
|
|
const wrapper = shallow(
|
|
<QueryCopilotFeedbackModal
|
|
explorer={new Explorer()}
|
|
databaseId="CopilotUserDb"
|
|
containerId="CopilotUserContainer"
|
|
mode="User"
|
|
/>,
|
|
);
|
|
|
|
expect(wrapper.props().isOpen).toBeTruthy();
|
|
expect(wrapper).toMatchSnapshot();
|
|
});
|
|
|
|
it("should close on cancel click", () => {
|
|
const wrapper = shallow(
|
|
<QueryCopilotFeedbackModal
|
|
explorer={new Explorer()}
|
|
databaseId="CopilotUserDb"
|
|
containerId="CopilotUserContainer"
|
|
mode="User"
|
|
/>,
|
|
);
|
|
|
|
const cancelButton = wrapper.find(IconButton);
|
|
cancelButton.simulate("click");
|
|
wrapper.setProps({});
|
|
|
|
expect(wrapper.props().isOpen).toBeFalsy();
|
|
expect(wrapper).toMatchSnapshot();
|
|
});
|
|
|
|
it("should get user unput", () => {
|
|
const wrapper = shallow(
|
|
<QueryCopilotFeedbackModal
|
|
explorer={new Explorer()}
|
|
databaseId="CopilotUserDb"
|
|
containerId="CopilotUserContainer"
|
|
mode="User"
|
|
/>,
|
|
);
|
|
const testUserInput = "test user input";
|
|
|
|
const userInput = wrapper.find(TextField).first();
|
|
userInput.simulate("change", {}, testUserInput);
|
|
|
|
expect(wrapper.find(TextField).first().props().value).toEqual(testUserInput);
|
|
expect(wrapper).toMatchSnapshot();
|
|
});
|
|
|
|
it("should not render dont show again button", () => {
|
|
const wrapper = shallow(
|
|
<QueryCopilotFeedbackModal
|
|
explorer={new Explorer()}
|
|
databaseId="CopilotUserDb"
|
|
containerId="CopilotUserContainer"
|
|
mode="User"
|
|
/>,
|
|
);
|
|
|
|
const dontShowAgain = wrapper.find(Checkbox);
|
|
|
|
expect(dontShowAgain).toHaveLength(0);
|
|
expect(wrapper).toMatchSnapshot();
|
|
});
|
|
|
|
it("should render dont show again button and check it", () => {
|
|
mockUseCopilotStore.mockReturnValue({
|
|
...mockReturnValue,
|
|
showFeedbackModal: true,
|
|
likeQuery: true,
|
|
});
|
|
const wrapper = shallow(
|
|
<QueryCopilotFeedbackModal
|
|
explorer={new Explorer()}
|
|
databaseId="CopilotUserDb"
|
|
containerId="CopilotUserContainer"
|
|
mode="User"
|
|
/>,
|
|
);
|
|
|
|
const dontShowAgain = wrapper.find(Checkbox);
|
|
dontShowAgain.simulate("change", {}, true);
|
|
|
|
expect(wrapper.find(Checkbox)).toHaveLength(1);
|
|
expect(wrapper.find(Checkbox).first().props().checked).toBeTruthy();
|
|
expect(wrapper).toMatchSnapshot();
|
|
});
|
|
|
|
it("should cancel submission", () => {
|
|
const wrapper = shallow(
|
|
<QueryCopilotFeedbackModal
|
|
explorer={new Explorer()}
|
|
databaseId="CopilotUserDb"
|
|
containerId="CopilotUserContainer"
|
|
mode="User"
|
|
/>,
|
|
);
|
|
|
|
const cancelButton = wrapper.find(DefaultButton);
|
|
cancelButton.simulate("click");
|
|
wrapper.setProps({});
|
|
|
|
expect(wrapper.props().isOpen).toBeFalsy();
|
|
expect(wrapper).toMatchSnapshot();
|
|
});
|
|
|
|
it("should not submit submission if required description field is null", () => {
|
|
const explorer = new Explorer();
|
|
const wrapper = shallow(
|
|
<QueryCopilotFeedbackModal
|
|
explorer={explorer}
|
|
databaseId="CopilotUserDb"
|
|
containerId="CopilotUserContainer"
|
|
mode="User"
|
|
/>,
|
|
);
|
|
|
|
const submitButton = wrapper.find(PrimaryButton);
|
|
submitButton.simulate("click");
|
|
wrapper.setProps({});
|
|
|
|
expect(SubmitFeedback).toHaveBeenCalledTimes(0);
|
|
});
|
|
|
|
it("should submit submission", () => {
|
|
const explorer = new Explorer();
|
|
const wrapper = shallow(
|
|
<QueryCopilotFeedbackModal
|
|
explorer={explorer}
|
|
databaseId="CopilotUserDb"
|
|
containerId="CopilotUserContainer"
|
|
mode="User"
|
|
/>,
|
|
);
|
|
|
|
const submitButton = wrapper.find("form");
|
|
submitButton.simulate("submit");
|
|
wrapper.setProps({});
|
|
|
|
expect(SubmitFeedback).toHaveBeenCalledTimes(1);
|
|
expect(SubmitFeedback).toHaveBeenCalledWith({
|
|
containerId: "CopilotUserContainer",
|
|
databaseId: "CopilotUserDb",
|
|
mode: "User",
|
|
params: {
|
|
likeQuery: false,
|
|
generatedQuery: "test query",
|
|
userPrompt: "test prompt",
|
|
description: "",
|
|
},
|
|
explorer: explorer,
|
|
});
|
|
expect(wrapper.props().isOpen).toBeFalsy();
|
|
expect(wrapper).toMatchSnapshot();
|
|
});
|
|
});
|