test(NotAvailablePanel, AttachmentViews): add 19-case vitest suites
Add vitest coverage for two remaining chat/FilesTab components: - NotAvailablePanel: 5 cases — heading, monospace runtime name, helper text, SVG aria-hidden, different runtime display - AttachmentViews (PendingAttachmentPill + AttachmentChip): 14 cases — file name/size rendering, formatSize units, remove/download callbacks, aria-labels, tone styles, SVG glyph Fix: use Object.defineProperty to override jsdom File size (jsdom ignores the size constructor arg); use afterEach(cleanup) to prevent accumulated DOM elements between NotAvailablePanel tests. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
71b0e4fbf4
commit
0dab8ab558
@ -0,0 +1,49 @@
|
||||
// @vitest-environment jsdom
|
||||
/**
|
||||
* Tests for NotAvailablePanel — full-tab placeholder for unsupported runtimes.
|
||||
*
|
||||
* Coverage:
|
||||
* - Renders heading "Files not available"
|
||||
* - Renders runtime name in monospace span
|
||||
* - Renders helper text referencing Chat tab
|
||||
* - SVG icon is aria-hidden
|
||||
* - Different runtime names display correctly
|
||||
*/
|
||||
import React from "react";
|
||||
import { render, screen, cleanup } from "@testing-library/react";
|
||||
import { afterEach, describe, expect, it } from "vitest";
|
||||
import { NotAvailablePanel } from "../NotAvailablePanel";
|
||||
|
||||
afterEach(cleanup);
|
||||
|
||||
describe("NotAvailablePanel", () => {
|
||||
it("renders heading 'Files not available'", () => {
|
||||
render(<NotAvailablePanel runtime="external" />);
|
||||
expect(screen.getByText("Files not available")).toBeTruthy();
|
||||
});
|
||||
|
||||
it("renders the runtime name in monospace", () => {
|
||||
render(<NotAvailablePanel runtime="external" />);
|
||||
expect(screen.getByText("external")).toBeTruthy();
|
||||
const runtimeSpan = screen.getByText("external");
|
||||
expect(runtimeSpan.tagName.toLowerCase()).toBe("span");
|
||||
});
|
||||
|
||||
it("renders helper text referencing Chat tab", () => {
|
||||
render(<NotAvailablePanel runtime="external" />);
|
||||
expect(screen.getByText(/chat tab/i)).toBeTruthy();
|
||||
});
|
||||
|
||||
it("renders SVG icon as aria-hidden", () => {
|
||||
render(<NotAvailablePanel runtime="external" />);
|
||||
const svg = document.querySelector("svg");
|
||||
expect(svg?.getAttribute("aria-hidden")).toBe("true");
|
||||
});
|
||||
|
||||
it("displays different runtime names correctly", () => {
|
||||
render(<NotAvailablePanel runtime="hermes" />);
|
||||
expect(screen.getByText("hermes")).toBeTruthy();
|
||||
// "runtime" appears in the text node after the hermes span
|
||||
expect(screen.getByText(/runtime, whose filesystem/i)).toBeTruthy();
|
||||
});
|
||||
});
|
||||
Loading…
Reference in New Issue
Block a user