import { createMockFetch, DISCUZ_USER_INDEX, DISCUZ_USER_SEEDING, DISCUZ_USER_SPACE } from "@umt/testkit"; import { describe, expect, it } from "vitest"; import { DiscuzUserInfo } from "./discuz.ts"; import { runParser } from "./testing.ts"; describe("DiscuzUserInfo(MP discuz.py)", () => { it("&uid= 链接定位用户,空间页取等级/积分/流量,做种表按表头定位列", async () => { const m = createMockFetch({ "/": { body: DISCUZ_USER_INDEX }, "/home.php?uid=42": { body: DISCUZ_USER_SPACE }, "/forum.php?mod=torrents": { body: DISCUZ_USER_SEEDING }, }); const info = await runParser(DiscuzUserInfo, { fetch: m.fetch }); expect(info).toMatchObject({ schema: "DiscuzX", userId: "42", username: "frank", userLevel: "Lv3", joinAt: "2018-02-03 04:05:00", bonus: 520, upload: 2 * 1024 ** 4, download: 500 * 1024 ** 3, seeding: 1, seedingInfo: [[6, 8 * 1024 ** 3]], }); }); it("未登录(无登出链接):errMsg", async () => { const m = createMockFetch({ "/": { body: "登录" }, }); const info = await runParser(DiscuzUserInfo, { fetch: m.fetch }); expect(info.errMsg).toContain("未检测到已登陆"); expect(info.userId).toBeNull(); }); });