import { fireEvent, render, screen } from "@testing-library/react"; import { beforeEach, expect, test, vi } from "vitest"; const mocks = vi.hoisted(() => ({ openPermissions: vi.fn(), page: null })); vi.mock("@/features/external-admin-users/hooks/useExternalAdminUsersPage.js", () => ({ useExternalAdminUsersPage: () => mocks.page, })); import { ExternalAdminUsersPage } from "./ExternalAdminUsersPage.jsx"; beforeEach(() => { mocks.openPermissions.mockReset(); mocks.page = pageFixture(); }); test("exposes a dedicated row action for configuring external account permissions", () => { render(); const button = screen.getByRole("button", { name: "配置权限" }); fireEvent.click(button); expect(mocks.openPermissions).toHaveBeenCalledWith(mocks.page.data.items[0]); expect(screen.getByText("2 项")).toBeInTheDocument(); }); test("disables permission configuration without the main-admin grant ability", () => { mocks.page.abilities.canManagePermissions = false; render(); expect(screen.getByRole("button", { name: "配置权限" })).toBeDisabled(); }); function pageFixture() { const item = { appCode: "fami", createdAtMs: 1784073600000, createdByAdminId: 1, id: 71, linkedUser: { displayUserId: "123456", userId: "user-1", username: "fami123456" }, permissions: ["user:list", "user:update"], permissionRevision: 3, status: "active", username: "123456", }; return { abilities: { canCreate: true, canManagePermissions: true, canResetPassword: true, canStatus: true, canView: true, }, catalogError: "", catalogLoading: false, closeCreate: vi.fn(), closePassword: vi.fn(), closePermissions: vi.fn(), createForm: { confirmPassword: "", displayUserId: "", password: "", permissions: [], username: "" }, createOpen: false, data: { items: [item], page: 1, pageSize: 50, total: 1 }, error: "", keyword: "", loading: false, loadingAction: "", lookupLoading: false, lookupTarget: vi.fn(), openCreate: vi.fn(), openPassword: vi.fn(), openPermissions: mocks.openPermissions, page: 1, passwordForm: { confirmPassword: "", password: "" }, passwordUser: null, permissionCatalog: { items: [], total: 0 }, permissionError: "", permissionForm: { expectedRevision: null, permissions: [] }, permissionLoading: false, permissionUser: null, reload: vi.fn(), reloadPermissionCatalog: vi.fn(), resetFilters: vi.fn(), retryPermissions: vi.fn(), setCreateForm: vi.fn(), setDisplayUserId: vi.fn(), setKeyword: vi.fn(), setPage: vi.fn(), setPasswordForm: vi.fn(), setPermissions: vi.fn(), setStatus: vi.fn(), status: "", submitCreate: vi.fn(), submitPassword: vi.fn(), submitPermissions: vi.fn(), targetUser: null, toggleStatus: vi.fn(), }; }