2 changed files with 60 additions and 9 deletions
@ -0,0 +1,51 @@ |
|||||
|
import { describe, expect, it, vi } from "vitest"; |
||||
|
import { fireEvent, render, screen, within } from "@testing-library/react"; |
||||
|
|
||||
|
import { ResourceManagerDrawer } from "@/components/ResourceManagerDrawer"; |
||||
|
|
||||
|
const translations: Record<string, string> = { |
||||
|
"common.close": "Close", |
||||
|
"resourceManager.title": "Resource Manager", |
||||
|
"resourceManager.tabCanvas": "Canvas", |
||||
|
"resourceManager.tabAssets": "Assets", |
||||
|
}; |
||||
|
|
||||
|
vi.mock("@/i18n", () => ({ |
||||
|
useI18n: () => ({ |
||||
|
t: (key: string) => translations[key] ?? key, |
||||
|
}), |
||||
|
})); |
||||
|
|
||||
|
vi.mock("@/components/AssetLibraryDrawer", () => ({ |
||||
|
AssetLibraryPanel: ({ active }: { active?: boolean }) => ( |
||||
|
<div data-active={String(active)} data-testid="asset-library-panel"> |
||||
|
Asset Library Panel |
||||
|
</div> |
||||
|
), |
||||
|
})); |
||||
|
|
||||
|
vi.mock("@/components/CanvasOutlineDrawer", () => ({ |
||||
|
CanvasOutlinePanel: () => <div data-testid="canvas-outline-panel">Canvas Outline Panel</div>, |
||||
|
})); |
||||
|
|
||||
|
describe("ResourceManagerDrawer", () => { |
||||
|
it("shows assets first and selects assets by default", () => { |
||||
|
render(<ResourceManagerDrawer open onClose={vi.fn()} />); |
||||
|
|
||||
|
const buttons = screen.getAllByRole("button"); |
||||
|
const tabButtons = buttons.filter((button) => ["Assets", "Canvas"].includes(button.textContent ?? "")); |
||||
|
|
||||
|
expect(tabButtons.map((button) => button.textContent)).toEqual(["Assets", "Canvas"]); |
||||
|
expect(screen.getByTestId("asset-library-panel")).toHaveAttribute("data-active", "true"); |
||||
|
expect(screen.queryByTestId("canvas-outline-panel")).not.toBeInTheDocument(); |
||||
|
}); |
||||
|
|
||||
|
it("switches to the canvas panel when the canvas tab is clicked", () => { |
||||
|
render(<ResourceManagerDrawer open onClose={vi.fn()} />); |
||||
|
|
||||
|
fireEvent.click(within(screen.getByText("Canvas").closest("button")!).getByText("Canvas")); |
||||
|
|
||||
|
expect(screen.getByTestId("canvas-outline-panel")).toBeInTheDocument(); |
||||
|
expect(screen.queryByTestId("asset-library-panel")).not.toBeInTheDocument(); |
||||
|
}); |
||||
|
}); |
||||
Loading…
Reference in new issue