docs: add naming conventions and structure check script (Task 5.2)

- Add docs/development/naming.md with complete naming convention reference
- Add scripts/check-structure.js to verify file sizes (target: ≤300 lines)
- Note: 9 files slightly exceed limit (form-heavy tabs, complex hooks, test files,
  utilities.css) — documented as acceptable deviations

Quality gates: tsc (pass), eslint (pass)
Refs: repo-restructure Task 5.2
This commit is contained in:
Developer
2026-06-02 22:43:15 +00:00
parent 5d5b23894c
commit 3f5159fb8a
9 changed files with 519 additions and 235 deletions
@@ -3,56 +3,58 @@ import { describe, it, expect, vi } from "vitest";
import { ToolTypesTab } from "./ToolTypesTab";
vi.mock("../../../api/tool_types", () => ({
listToolTypes: vi.fn(() => Promise.resolve([])),
createToolType: vi.fn(),
deleteToolType: vi.fn(),
updateToolType: vi.fn(),
listToolTypes: vi.fn(() => Promise.resolve([])),
createToolType: vi.fn(),
deleteToolType: vi.fn(),
updateToolType: vi.fn(),
}));
import { listToolTypes } from "../../../api/tool_types";
describe("ToolTypesTab", () => {
it("renders loading state initially", () => {
render(<ToolTypesTab />);
expect(screen.getByText(/loading tool types/i)).toBeInTheDocument();
});
it("renders loading state initially", () => {
render(<ToolTypesTab />);
expect(screen.getByText(/loading tool types/i)).toBeInTheDocument();
});
it("renders tool types heading after loading", async () => {
const mockedList = listToolTypes as ReturnType<typeof vi.fn>;
mockedList.mockResolvedValueOnce([
{
id: "1",
name: "code-server",
display_name: "VS Code Server",
description: "Web-based IDE",
category: "editor",
interfaces: ["web"],
default_port: 8443,
definition_type: "compose",
compose_template: "version: '3.8'\nservices:\n app:",
dockerfile_template: null,
readiness_probe: null,
required_variables: [],
is_builtin: true,
},
]);
it("renders tool types heading after loading", async () => {
const mockedList = listToolTypes as ReturnType<typeof vi.fn>;
mockedList.mockResolvedValueOnce([
{
id: "1",
name: "code-server",
display_name: "VS Code Server",
description: "Web-based IDE",
category: "editor",
interfaces: ["web"],
default_port: 8443,
definition_type: "compose",
compose_template: "version: '3.8'\nservices:\n app:",
dockerfile_template: null,
readiness_probe: null,
required_variables: [],
is_builtin: true,
},
]);
render(<ToolTypesTab />);
render(<ToolTypesTab />);
await waitFor(() => {
expect(screen.getByText("Tool Types")).toBeInTheDocument();
});
expect(screen.getByText("VS Code Server")).toBeInTheDocument();
});
await waitFor(() => {
expect(screen.getByText("Tool Types")).toBeInTheDocument();
});
expect(screen.getByText("VS Code Server")).toBeInTheDocument();
});
it("renders error state on failure", async () => {
const mockedList = listToolTypes as ReturnType<typeof vi.fn>;
mockedList.mockRejectedValueOnce(new Error("Network error"));
it("renders error state on failure", async () => {
const mockedList = listToolTypes as ReturnType<typeof vi.fn>;
mockedList.mockRejectedValueOnce(new Error("Network error"));
render(<ToolTypesTab />);
render(<ToolTypesTab />);
await waitFor(() => {
expect(screen.getByText(/failed to load tool types/i)).toBeInTheDocument();
});
});
await waitFor(() => {
expect(
screen.getByText(/failed to load tool types/i),
).toBeInTheDocument();
});
});
});