Files
Jyotisha/frontend/tests/account-dialog-overlay.test.ts
T
Jesse_Chen a671986a1d
Independent Staging Quality Gate / validate (push) Failing after 10m21s
Independent Staging Quality Gate / publish (push) Has been skipped
fix(frontend): complete settings MVP structure
2026-08-30 16:32:58 +08:00

53 lines
1.4 KiB
TypeScript

import assert from "node:assert/strict";
import { createElement, createRef } from "react";
import { renderToString } from "react-dom/server";
import test from "node:test";
import {
AccountDialogOverlay,
type AccountOverlayModel,
} from "../src/components/account-dialog-overlay.tsx";
test("a closed account overlay does not render profile or logout content", () => {
const overlayRef = createRef<HTMLElement | null>() as AccountOverlayModel["overlayRef"];
const closeButtonRef = createRef<HTMLButtonElement | null>() as AccountOverlayModel["closeButtonRef"];
const modelRef = createRef<AccountOverlayModel | null>() as { current: AccountOverlayModel | null };
let profileRenders = 0;
let logoutRenders = 0;
modelRef.current = {
title: "个人资料",
dialogClass: "profile-modal",
signingOut: false,
close() {},
navigate() {},
openRedeem() {},
overlayRef,
closeButtonRef,
renderProfile() {
profileRenders += 1;
return null;
},
renderChartLibrary() {
return null;
},
renderGeneral() {
return null;
},
renderLogout() {
logoutRenders += 1;
return null;
},
};
const html = renderToString(createElement(AccountDialogOverlay, {
open: false,
dialog: null,
openEpoch: 0,
modelRef,
}));
assert.equal(html, "");
assert.equal(profileRenders, 0);
assert.equal(logoutRenders, 0);
});