import assert from "node:assert/strict"; import { describe, it } from "node:test"; import { readFileSync } from "node:fs"; import { dirname, join } from "node:path"; import { fileURLToPath } from "node:url"; const __dirname = dirname(fileURLToPath(import.meta.url)); const source = readFileSync(join(__dirname, "App.vue"), "utf8"); describe("App reset password account picker", () => { it("uses a searchable system-user select instead of free text input", () => { assert.match(source, //); assert.doesNotMatch(source, /placeholder="请输入需要重置密码的账号"/); }); it("loads reset password account options from system permission users", () => { assert.match(source, /fetchResource\("\/system-permissions\/users", \[\]\)/); assert.match(source, /resetPasswordUserOptions/); assert.match(source, /formatResetPasswordUserLabel\(user\)/); }); }); describe("App user menu interactions", () => { it("closes the avatar menu when the user clicks outside the menu shell", () => { assert.match(source, /ref="userMenuShellRef"/); assert.match(source, /function handleUserMenuOutsidePointerDown\(event\)/); assert.match(source, /userMenuShellRef\.value\?\.contains\(event\.target\)/); assert.match(source, /document\.addEventListener\("pointerdown", handleUserMenuOutsidePointerDown\)/); assert.match(source, /document\.removeEventListener\("pointerdown", handleUserMenuOutsidePointerDown\)/); }); });