53 lines
1.4 KiB
TypeScript
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);
|
|
});
|