mirror of
https://gitee.com/spark-store-project/spark-store
synced 2026-06-22 06:03:49 +08:00
94 lines
2.5 KiB
TypeScript
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")',
|
|
});
|
|
});
|
|
});
|