mirror of
https://github.com/pacnpal/Roo-Code.git
synced 2025-12-20 04:11:10 -05:00
Remove annoying test
This commit is contained in:
@@ -1,212 +0,0 @@
|
|||||||
import { render, fireEvent, screen } from "@testing-library/react"
|
|
||||||
import { useExtensionState } from "../../../context/ExtensionStateContext"
|
|
||||||
import AutoApproveMenu from "../AutoApproveMenu"
|
|
||||||
import { defaultModeSlug, defaultPrompts } from "../../../../../src/shared/modes"
|
|
||||||
import { experimentDefault } from "../../../../../src/shared/experiments"
|
|
||||||
|
|
||||||
// Mock the ExtensionStateContext hook
|
|
||||||
jest.mock("../../../context/ExtensionStateContext")
|
|
||||||
|
|
||||||
const mockUseExtensionState = useExtensionState as jest.MockedFunction<typeof useExtensionState>
|
|
||||||
|
|
||||||
describe("AutoApproveMenu", () => {
|
|
||||||
const defaultMockState = {
|
|
||||||
// Required state properties
|
|
||||||
version: "1.0.0",
|
|
||||||
clineMessages: [],
|
|
||||||
taskHistory: [],
|
|
||||||
shouldShowAnnouncement: false,
|
|
||||||
allowedCommands: [],
|
|
||||||
soundEnabled: false,
|
|
||||||
soundVolume: 0.5,
|
|
||||||
diffEnabled: false,
|
|
||||||
fuzzyMatchThreshold: 1.0,
|
|
||||||
preferredLanguage: "English",
|
|
||||||
writeDelayMs: 1000,
|
|
||||||
browserViewportSize: "900x600",
|
|
||||||
screenshotQuality: 75,
|
|
||||||
terminalOutputLineLimit: 500,
|
|
||||||
mcpEnabled: true,
|
|
||||||
requestDelaySeconds: 5,
|
|
||||||
rateLimitSeconds: 0,
|
|
||||||
currentApiConfigName: "default",
|
|
||||||
listApiConfigMeta: [],
|
|
||||||
mode: defaultModeSlug,
|
|
||||||
customModePrompts: defaultPrompts,
|
|
||||||
customSupportPrompts: {},
|
|
||||||
enhancementApiConfigId: "",
|
|
||||||
didHydrateState: true,
|
|
||||||
showWelcome: false,
|
|
||||||
theme: {},
|
|
||||||
glamaModels: {},
|
|
||||||
openRouterModels: {},
|
|
||||||
openAiModels: [],
|
|
||||||
mcpServers: [],
|
|
||||||
filePaths: [],
|
|
||||||
experiments: experimentDefault,
|
|
||||||
customModes: [],
|
|
||||||
enableMcpServerCreation: false,
|
|
||||||
|
|
||||||
// Auto-approve specific properties
|
|
||||||
alwaysAllowReadOnly: false,
|
|
||||||
alwaysAllowWrite: false,
|
|
||||||
alwaysAllowExecute: false,
|
|
||||||
alwaysAllowBrowser: false,
|
|
||||||
alwaysAllowMcp: false,
|
|
||||||
alwaysApproveResubmit: false,
|
|
||||||
alwaysAllowModeSwitch: false,
|
|
||||||
autoApprovalEnabled: false,
|
|
||||||
|
|
||||||
// Required setter functions
|
|
||||||
setApiConfiguration: jest.fn(),
|
|
||||||
setCustomInstructions: jest.fn(),
|
|
||||||
setAlwaysAllowReadOnly: jest.fn(),
|
|
||||||
setAlwaysAllowWrite: jest.fn(),
|
|
||||||
setAlwaysAllowExecute: jest.fn(),
|
|
||||||
setAlwaysAllowBrowser: jest.fn(),
|
|
||||||
setAlwaysAllowMcp: jest.fn(),
|
|
||||||
setAlwaysAllowModeSwitch: jest.fn(),
|
|
||||||
setShowAnnouncement: jest.fn(),
|
|
||||||
setAllowedCommands: jest.fn(),
|
|
||||||
setSoundEnabled: jest.fn(),
|
|
||||||
setSoundVolume: jest.fn(),
|
|
||||||
setDiffEnabled: jest.fn(),
|
|
||||||
setBrowserViewportSize: jest.fn(),
|
|
||||||
setFuzzyMatchThreshold: jest.fn(),
|
|
||||||
setPreferredLanguage: jest.fn(),
|
|
||||||
setWriteDelayMs: jest.fn(),
|
|
||||||
setScreenshotQuality: jest.fn(),
|
|
||||||
setTerminalOutputLineLimit: jest.fn(),
|
|
||||||
setMcpEnabled: jest.fn(),
|
|
||||||
setAlwaysApproveResubmit: jest.fn(),
|
|
||||||
setRequestDelaySeconds: jest.fn(),
|
|
||||||
setRateLimitSeconds: jest.fn(),
|
|
||||||
setCurrentApiConfigName: jest.fn(),
|
|
||||||
setListApiConfigMeta: jest.fn(),
|
|
||||||
onUpdateApiConfig: jest.fn(),
|
|
||||||
setMode: jest.fn(),
|
|
||||||
setCustomModePrompts: jest.fn(),
|
|
||||||
setCustomSupportPrompts: jest.fn(),
|
|
||||||
setEnhancementApiConfigId: jest.fn(),
|
|
||||||
setAutoApprovalEnabled: jest.fn(),
|
|
||||||
setExperimentEnabled: jest.fn(),
|
|
||||||
handleInputChange: jest.fn(),
|
|
||||||
setCustomModes: jest.fn(),
|
|
||||||
setEnableMcpServerCreation: jest.fn(),
|
|
||||||
}
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
mockUseExtensionState.mockReturnValue(defaultMockState)
|
|
||||||
})
|
|
||||||
|
|
||||||
afterEach(() => {
|
|
||||||
jest.clearAllMocks()
|
|
||||||
})
|
|
||||||
|
|
||||||
it("renders with initial collapsed state", () => {
|
|
||||||
render(<AutoApproveMenu />)
|
|
||||||
|
|
||||||
// Check for main checkbox and label
|
|
||||||
expect(screen.getByText("Auto-approve:")).toBeInTheDocument()
|
|
||||||
expect(screen.getByText("None")).toBeInTheDocument()
|
|
||||||
|
|
||||||
// Verify the menu is collapsed (actions not visible)
|
|
||||||
expect(screen.queryByText("Read files and directories")).not.toBeInTheDocument()
|
|
||||||
})
|
|
||||||
|
|
||||||
it("expands menu when clicked", () => {
|
|
||||||
render(<AutoApproveMenu />)
|
|
||||||
|
|
||||||
// Click to expand
|
|
||||||
fireEvent.click(screen.getByText("Auto-approve:"))
|
|
||||||
|
|
||||||
// Verify menu items are visible
|
|
||||||
expect(screen.getByText("Read files and directories")).toBeInTheDocument()
|
|
||||||
expect(screen.getByText("Edit files")).toBeInTheDocument()
|
|
||||||
expect(screen.getByText("Execute approved commands")).toBeInTheDocument()
|
|
||||||
expect(screen.getByText("Use the browser")).toBeInTheDocument()
|
|
||||||
expect(screen.getByText("Use MCP servers")).toBeInTheDocument()
|
|
||||||
expect(screen.getByText("Retry failed requests")).toBeInTheDocument()
|
|
||||||
})
|
|
||||||
|
|
||||||
it("toggles main auto-approval checkbox", () => {
|
|
||||||
render(<AutoApproveMenu />)
|
|
||||||
|
|
||||||
const mainCheckbox = screen.getByRole("checkbox")
|
|
||||||
fireEvent.click(mainCheckbox)
|
|
||||||
|
|
||||||
expect(defaultMockState.setAutoApprovalEnabled).toHaveBeenCalledWith(true)
|
|
||||||
})
|
|
||||||
|
|
||||||
it("toggles individual permissions", () => {
|
|
||||||
render(<AutoApproveMenu />)
|
|
||||||
|
|
||||||
// Expand menu
|
|
||||||
fireEvent.click(screen.getByText("Auto-approve:"))
|
|
||||||
|
|
||||||
// Click read files checkbox
|
|
||||||
fireEvent.click(screen.getByText("Read files and directories"))
|
|
||||||
expect(defaultMockState.setAlwaysAllowReadOnly).toHaveBeenCalledWith(true)
|
|
||||||
|
|
||||||
// Click edit files checkbox
|
|
||||||
fireEvent.click(screen.getByText("Edit files"))
|
|
||||||
expect(defaultMockState.setAlwaysAllowWrite).toHaveBeenCalledWith(true)
|
|
||||||
|
|
||||||
// Click execute commands checkbox
|
|
||||||
fireEvent.click(screen.getByText("Execute approved commands"))
|
|
||||||
expect(defaultMockState.setAlwaysAllowExecute).toHaveBeenCalledWith(true)
|
|
||||||
})
|
|
||||||
|
|
||||||
it("displays enabled actions in summary", () => {
|
|
||||||
mockUseExtensionState.mockReturnValue({
|
|
||||||
...defaultMockState,
|
|
||||||
alwaysAllowReadOnly: true,
|
|
||||||
alwaysAllowWrite: true,
|
|
||||||
autoApprovalEnabled: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
render(<AutoApproveMenu />)
|
|
||||||
|
|
||||||
// Check that enabled actions are shown in summary
|
|
||||||
expect(screen.getByText("Read, Edit")).toBeInTheDocument()
|
|
||||||
})
|
|
||||||
|
|
||||||
it("preserves checkbox states", () => {
|
|
||||||
// Mock state with some permissions enabled
|
|
||||||
const mockState = {
|
|
||||||
...defaultMockState,
|
|
||||||
alwaysAllowReadOnly: true,
|
|
||||||
alwaysAllowWrite: true,
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update mock to return our state
|
|
||||||
mockUseExtensionState.mockReturnValue(mockState)
|
|
||||||
|
|
||||||
render(<AutoApproveMenu />)
|
|
||||||
|
|
||||||
// Expand menu
|
|
||||||
fireEvent.click(screen.getByText("Auto-approve:"))
|
|
||||||
|
|
||||||
// Verify read and edit checkboxes are checked
|
|
||||||
expect(screen.getByLabelText("Read files and directories")).toBeInTheDocument()
|
|
||||||
expect(screen.getByLabelText("Edit files")).toBeInTheDocument()
|
|
||||||
|
|
||||||
// Verify the setters haven't been called yet
|
|
||||||
expect(mockState.setAlwaysAllowReadOnly).not.toHaveBeenCalled()
|
|
||||||
expect(mockState.setAlwaysAllowWrite).not.toHaveBeenCalled()
|
|
||||||
|
|
||||||
// Collapse menu
|
|
||||||
fireEvent.click(screen.getByText("Auto-approve:"))
|
|
||||||
|
|
||||||
// Expand again
|
|
||||||
fireEvent.click(screen.getByText("Auto-approve:"))
|
|
||||||
|
|
||||||
// Verify checkboxes are still present
|
|
||||||
expect(screen.getByLabelText("Read files and directories")).toBeInTheDocument()
|
|
||||||
expect(screen.getByLabelText("Edit files")).toBeInTheDocument()
|
|
||||||
|
|
||||||
// Verify the setters still haven't been called
|
|
||||||
expect(mockState.setAlwaysAllowReadOnly).not.toHaveBeenCalled()
|
|
||||||
expect(mockState.setAlwaysAllowWrite).not.toHaveBeenCalled()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
Reference in New Issue
Block a user