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