add Sidebar tests
This commit is contained in:
@@ -318,6 +318,7 @@ const Sidebar = ({
|
|||||||
{typeof configItem.value === "number" ? (
|
{typeof configItem.value === "number" ? (
|
||||||
<Input
|
<Input
|
||||||
type="number"
|
type="number"
|
||||||
|
data-testid={`${configKey}-input`}
|
||||||
value={configItem.value}
|
value={configItem.value}
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
const newConfig = { ...config };
|
const newConfig = { ...config };
|
||||||
@@ -331,6 +332,7 @@ const Sidebar = ({
|
|||||||
/>
|
/>
|
||||||
) : typeof configItem.value === "boolean" ? (
|
) : typeof configItem.value === "boolean" ? (
|
||||||
<Select
|
<Select
|
||||||
|
data-testid={`${configKey}-select`}
|
||||||
value={configItem.value.toString()}
|
value={configItem.value.toString()}
|
||||||
onValueChange={(val) => {
|
onValueChange={(val) => {
|
||||||
const newConfig = { ...config };
|
const newConfig = { ...config };
|
||||||
@@ -351,6 +353,7 @@ const Sidebar = ({
|
|||||||
</Select>
|
</Select>
|
||||||
) : (
|
) : (
|
||||||
<Input
|
<Input
|
||||||
|
data-testid={`${configKey}-input`}
|
||||||
value={configItem.value}
|
value={configItem.value}
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
const newConfig = { ...config };
|
const newConfig = { ...config };
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import { render, screen, fireEvent } from "@testing-library/react";
|
import { render, screen, fireEvent } from "@testing-library/react";
|
||||||
import { describe, it, beforeEach, jest } from "@jest/globals";
|
import { describe, it, beforeEach, jest } from "@jest/globals";
|
||||||
import Sidebar from "../Sidebar";
|
import Sidebar from "../Sidebar";
|
||||||
|
import { DEFAULT_INSPECTOR_CONFIG } from "../../lib/constants";
|
||||||
|
import { InspectorConfig } from "../../lib/configurationTypes";
|
||||||
|
|
||||||
// Mock theme hook
|
// Mock theme hook
|
||||||
jest.mock("../../lib/useTheme", () => ({
|
jest.mock("../../lib/useTheme", () => ({
|
||||||
@@ -28,6 +30,8 @@ describe("Sidebar Environment Variables", () => {
|
|||||||
logLevel: "info" as const,
|
logLevel: "info" as const,
|
||||||
sendLogLevelRequest: jest.fn(),
|
sendLogLevelRequest: jest.fn(),
|
||||||
loggingSupported: true,
|
loggingSupported: true,
|
||||||
|
config: DEFAULT_INSPECTOR_CONFIG,
|
||||||
|
setConfig: jest.fn(),
|
||||||
};
|
};
|
||||||
|
|
||||||
const renderSidebar = (props = {}) => {
|
const renderSidebar = (props = {}) => {
|
||||||
@@ -304,4 +308,74 @@ describe("Sidebar Environment Variables", () => {
|
|||||||
expect(setEnv).toHaveBeenCalledWith({ [longKey]: "test_value" });
|
expect(setEnv).toHaveBeenCalledWith({ [longKey]: "test_value" });
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("Configuration Operations", () => {
|
||||||
|
const openConfigSection = () => {
|
||||||
|
const button = screen.getByText("Configuration");
|
||||||
|
fireEvent.click(button);
|
||||||
|
};
|
||||||
|
|
||||||
|
it("should update MCP server request timeout", () => {
|
||||||
|
const setConfig = jest.fn();
|
||||||
|
renderSidebar({ config: DEFAULT_INSPECTOR_CONFIG, setConfig });
|
||||||
|
|
||||||
|
openConfigSection();
|
||||||
|
|
||||||
|
const timeoutInput = screen.getByTestId("MCP_SERVER_REQUEST_TIMEOUT-input");
|
||||||
|
fireEvent.change(timeoutInput, { target: { value: "5000" } });
|
||||||
|
|
||||||
|
expect(setConfig).toHaveBeenCalledWith({
|
||||||
|
MCP_SERVER_REQUEST_TIMEOUT: {
|
||||||
|
description: "Timeout for requests to the MCP server (ms)",
|
||||||
|
value: 5000,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should handle invalid timeout values entered by user", () => {
|
||||||
|
const setConfig = jest.fn();
|
||||||
|
renderSidebar({ config: DEFAULT_INSPECTOR_CONFIG, setConfig });
|
||||||
|
|
||||||
|
openConfigSection();
|
||||||
|
|
||||||
|
const timeoutInput = screen.getByTestId("MCP_SERVER_REQUEST_TIMEOUT-input");
|
||||||
|
fireEvent.change(timeoutInput, { target: { value: "abc1" } });
|
||||||
|
|
||||||
|
expect(setConfig).toHaveBeenCalledWith({
|
||||||
|
MCP_SERVER_REQUEST_TIMEOUT: {
|
||||||
|
description: "Timeout for requests to the MCP server (ms)",
|
||||||
|
value: 0,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should maintain configuration state after multiple updates", () => {
|
||||||
|
const setConfig = jest.fn();
|
||||||
|
const { rerender } = renderSidebar({ config: DEFAULT_INSPECTOR_CONFIG, setConfig });
|
||||||
|
|
||||||
|
openConfigSection();
|
||||||
|
|
||||||
|
// First update
|
||||||
|
const timeoutInput = screen.getByTestId("MCP_SERVER_REQUEST_TIMEOUT-input");
|
||||||
|
fireEvent.change(timeoutInput, { target: { value: "5000" } });
|
||||||
|
|
||||||
|
// Get the updated config from the first setConfig call
|
||||||
|
const updatedConfig = setConfig.mock.calls[0][0] as InspectorConfig;
|
||||||
|
|
||||||
|
// Rerender with the updated config
|
||||||
|
rerender(<Sidebar {...defaultProps} config={updatedConfig} setConfig={setConfig} />);
|
||||||
|
|
||||||
|
// Second update
|
||||||
|
const updatedTimeoutInput = screen.getByTestId("MCP_SERVER_REQUEST_TIMEOUT-input");
|
||||||
|
fireEvent.change(updatedTimeoutInput, { target: { value: "3000" } });
|
||||||
|
|
||||||
|
// Verify the final state matches what we expect
|
||||||
|
expect(setConfig).toHaveBeenLastCalledWith({
|
||||||
|
MCP_SERVER_REQUEST_TIMEOUT: {
|
||||||
|
description: "Timeout for requests to the MCP server (ms)",
|
||||||
|
value: 3000,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "concurrently \"cd client && npm run dev\" \"cd server && npm run dev\"",
|
"dev": "concurrently \"cd client && npm run dev\" \"cd server && npm run dev\"",
|
||||||
"dev:windows": "concurrently \"cd client && npm run dev\" \"cd server && npm run dev:windows",
|
"dev:windows": "concurrently \"cd client && npm run dev\" \"cd server && npm run dev:windows",
|
||||||
|
"test": "cd client && npm test",
|
||||||
"build-server": "cd server && npm run build",
|
"build-server": "cd server && npm run build",
|
||||||
"build-client": "cd client && npm run build",
|
"build-client": "cd client && npm run build",
|
||||||
"build": "npm run build-server && npm run build-client",
|
"build": "npm run build-server && npm run build-client",
|
||||||
|
|||||||
Reference in New Issue
Block a user