Files
Jyotisha/frontend/tests/account-dialog-overlay.test.ts
T
Jesse_ChenandCursor 3198fb6b2b
Independent Staging Quality Gate / validate (push) Successful in 10m14s
Independent Staging Quality Gate / publish (push) Successful in 11m5s
perf(frontend): split chat streaming, load Inter, isolate admin CSS
Settled messages no longer rebuild on every token, Inter is actually
requested, and admin routes drop the 33 KB chat stylesheet. Root
force-dynamic is gone so public shells can prerender without changing
the no-store Cache-Control contract.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-29 03:39:43 +08:00

46 lines
1.3 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() {},
takeOpenLibraryRequest() { return false; },
overlayRef,
closeButtonRef,
renderProfile() {
profileRenders += 1;
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);
});