Browse Source

修改资源显示

feature/handleReconstruction
yun 3 hours ago
parent
commit
d43d118052
  1. 18
      src/components/ResourceManagerDrawer.tsx
  2. 51
      src/components/__tests__/ResourceManagerDrawer.test.tsx

18
src/components/ResourceManagerDrawer.tsx

@ -17,7 +17,7 @@ type ResourceManagerTab = "canvas" | "assets";
export function ResourceManagerDrawer({ open, onClose }: ResourceManagerDrawerProps) {
const { t } = useI18n();
const [activeTab, setActiveTab] = useState<ResourceManagerTab>("canvas");
const [activeTab, setActiveTab] = useState<ResourceManagerTab>("assets");
const tabButtonClass = (tab: ResourceManagerTab) => [
"flex h-8 items-center gap-1.5 rounded-lg px-3 text-sm font-semibold transition-colors",
@ -66,14 +66,6 @@ export function ResourceManagerDrawer({ open, onClose }: ResourceManagerDrawerPr
<div className="px-4 pt-3">
<div className="flex items-center gap-1">
<button
type="button"
className={tabButtonClass("canvas")}
onClick={() => setActiveTab("canvas")}
>
<NodeIndexOutlined className="text-[14px]" />
<span>{t("resourceManager.tabCanvas")}</span>
</button>
<button
type="button"
className={tabButtonClass("assets")}
@ -82,6 +74,14 @@ export function ResourceManagerDrawer({ open, onClose }: ResourceManagerDrawerPr
<FolderOpenOutlined className="text-[14px]" />
<span>{t("resourceManager.tabAssets")}</span>
</button>
<button
type="button"
className={tabButtonClass("canvas")}
onClick={() => setActiveTab("canvas")}
>
<NodeIndexOutlined className="text-[14px]" />
<span>{t("resourceManager.tabCanvas")}</span>
</button>
</div>
</div>

51
src/components/__tests__/ResourceManagerDrawer.test.tsx

@ -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…
Cancel
Save