86 lines
1.8 KiB
JavaScript
86 lines
1.8 KiB
JavaScript
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]);
|
|
});
|