Files
spark-store/src/__tests__/unit/UserManagementView.test.ts
T

94 lines
2.5 KiB
TypeScript

import { render, screen } from "@testing-library/vue";
import { describe, expect, it } from "vitest";
import UserManagementView from "@/components/UserManagementView.vue";
import type { DownloadedAppRecord, SparkUser } from "@/global/typedefinition";
const user: SparkUser = {
id: 1,
flarumUserId: "123",
username: "momen",
displayName: "Momen",
avatarUrl: "https://bbs.spark-app.store/avatar.png",
forumLevel: "管理员",
forumGroups: ["管理员"],
};
const download: DownloadedAppRecord = {
id: 1,
appKey: "app:office:wps",
pkgname: "wps",
name: "WPS",
category: "office",
selectedOrigin: "apm",
version: "1.0.0",
packageArch: "amd64",
downloadedAt: "2026-05-18T00:00:00Z",
};
describe("UserManagementView", () => {
it("renders profile, forum level, links, downloads, and sync preference", () => {
render(UserManagementView, {
props: {
user,
downloadedApps: [download],
syncEnabled: true,
loading: false,
error: "",
syncing: false,
syncMessage: "",
},
});
expect(screen.getByText("Momen")).toBeTruthy();
expect(screen.getByText("管理员")).toBeTruthy();
expect(screen.getByText("论坛首页")).toBeTruthy();
expect(screen.getByText("修改论坛资料")).toBeTruthy();
expect(screen.getByText("WPS")).toBeTruthy();
expect(screen.getByLabelText("自动同步已安装应用")).toBeChecked();
});
it("shows manual sync progress and result feedback", async () => {
const { rerender } = render(UserManagementView, {
props: {
user,
downloadedApps: [],
syncEnabled: false,
loading: false,
error: "",
syncing: true,
syncMessage: "",
},
});
expect(screen.getByRole("button", { name: "同步中..." })).toBeDisabled();
await rerender({ syncing: false, syncMessage: "同步完成" });
expect(screen.getByText("同步完成")).toBeTruthy();
});
it("renders the forum profile cover when available", () => {
render(UserManagementView, {
props: {
user: {
...user,
coverUrl:
"https://bbs.spark-app.store/assets/covers/JizZCVjiSFASrEfp.jpg",
},
downloadedApps: [],
syncEnabled: false,
loading: false,
error: "",
syncing: false,
syncMessage: "",
},
});
expect(screen.getByTestId("profile-cover")).toHaveStyle({
backgroundImage:
'url("https://bbs.spark-app.store/assets/covers/JizZCVjiSFASrEfp.jpg")',
});
});
});