import test from "node:test"; import assert from "node:assert/strict"; import { registerHooks } from "node:module"; const state = { user: null, }; globalThis.__getHeadInfoCloudMock = { database() { return { collection() { return { where() { return { async getOne() { return { data: state.user }; }, }; }, }; }, }; }, }; globalThis.__getHeadInfoUtilsMock = { checkToken(received, expected) { return received === expected; }, }; registerHooks({ resolve(specifier, context, nextResolve) { if (specifier === "@lafjs/cloud") { return { url: "data:text/javascript,export default globalThis.__getHeadInfoCloudMock", shortCircuit: true, }; } if (specifier === "@/Utils") { return { url: "data:text/javascript,export default globalThis.__getHeadInfoUtilsMock", shortCircuit: true, }; } return nextResolve(specifier, context); }, }); const { default: getHeadInfo } = await import( new URL("../functions/getHeadInfo.ts", import.meta.url) ); test("getHeadInfo returns the user's catArr", async () => { state.user = { _id: "u1", token: "secret", headArr: [1, 2, 3], catArr: [1, 2, 3, 4], film: 20, }; const result = await getHeadInfo({ body: { uid: "u1", token: "secret" }, }); assert.equal(result.code, 1); assert.deepEqual(result.data.catArr, [1, 2, 3, 4]); }); test("getHeadInfo returns default catArr for a legacy user", async () => { state.user = { _id: "u1", token: "secret", headArr: [1, 2, 3], film: 20, }; const result = await getHeadInfo({ body: { uid: "u1", token: "secret" }, }); assert.deepEqual(result.data.catArr, [1, 2, 3]); });