Files
horus-3d/tests/unit/connectionPanel-close.test.ts
Luke The Dev 4fa4f13558 First Release of Claw3D (#11)
Co-authored-by: iamlukethedev <iamlukethedev@users.noreply.github.com>
2026-03-19 23:14:04 -05:00

85 lines
2.4 KiB
TypeScript

import { createElement } from "react";
import { afterEach, describe, expect, it, vi } from "vitest";
import { cleanup, fireEvent, render, screen } from "@testing-library/react";
import { ConnectionPanel } from "@/features/agents/components/ConnectionPanel";
describe("ConnectionPanel close control", () => {
afterEach(() => {
cleanup();
});
it("renders close control and calls handler when provided", () => {
const onClose = vi.fn();
render(
createElement(ConnectionPanel, {
gatewayUrl: "ws://127.0.0.1:18789",
token: "token",
status: "disconnected",
error: null,
onGatewayUrlChange: vi.fn(),
onTokenChange: vi.fn(),
onConnect: vi.fn(),
onDisconnect: vi.fn(),
onClose,
})
);
fireEvent.click(screen.getByTestId("gateway-connection-close"));
expect(onClose).toHaveBeenCalledTimes(1);
});
it("does not render close control when handler is missing", () => {
render(
createElement(ConnectionPanel, {
gatewayUrl: "ws://127.0.0.1:18789",
token: "token",
status: "disconnected",
error: null,
onGatewayUrlChange: vi.fn(),
onTokenChange: vi.fn(),
onConnect: vi.fn(),
onDisconnect: vi.fn(),
})
);
expect(screen.queryByTestId("gateway-connection-close")).not.toBeInTheDocument();
});
it("renders semantic gateway status class markers", () => {
const { rerender } = render(
createElement(ConnectionPanel, {
gatewayUrl: "ws://127.0.0.1:18789",
token: "token",
status: "disconnected",
error: null,
onGatewayUrlChange: vi.fn(),
onTokenChange: vi.fn(),
onConnect: vi.fn(),
onDisconnect: vi.fn(),
})
);
const disconnected = screen.getByText("Disconnected");
expect(disconnected).toHaveAttribute("data-status", "disconnected");
expect(disconnected).toHaveClass("ui-badge-status-disconnected");
rerender(
createElement(ConnectionPanel, {
gatewayUrl: "ws://127.0.0.1:18789",
token: "token",
status: "connected",
error: null,
onGatewayUrlChange: vi.fn(),
onTokenChange: vi.fn(),
onConnect: vi.fn(),
onDisconnect: vi.fn(),
})
);
const connected = screen.getByText("Connected");
expect(connected).toHaveAttribute("data-status", "connected");
expect(connected).toHaveClass("ui-badge-status-connected");
});
});