import { describe, expect, it } from "vitest"; import { PUBLISH_ACCOUNT_NOT_LOGGED_IN_MESSAGE, QIEHAO_REAL_NAME_AUTH_MESSAGE, WANGYIHAO_DRAFT_SAVE_PARAMETER_MESSAGE, WANGYIHAO_PUBLISH_CLICK_MESSAGE, WANGYIHAO_TOKEN_MISSING_MESSAGE, WEIXIN_GZH_PUBLIC_URL_MISSING_MESSAGE, isQiehaoRealNameAuthError, normalizePublisherErrorMessage, normalizePublisherLoginErrorMessage, normalizeQiehaoPublishErrorMessage, normalizeWangyihaoPublishErrorMessage, normalizeWeixinGzhPublishErrorMessage, } from "./publisher-errors"; describe("publisher error normalization", () => { it("normalizes Qiehao real-name authentication failures from raw platform text", () => { expect( normalizePublisherErrorMessage("type:business, code:-5022, msg:user is not real name authentication"), ).toBe(QIEHAO_REAL_NAME_AUTH_MESSAGE); }); it("recognizes Qiehao real-name authentication failures by business code", () => { expect(isQiehaoRealNameAuthError("publish rejected", -5022)).toBe(true); expect(normalizeQiehaoPublishErrorMessage("publish rejected", -5022)).toBe(QIEHAO_REAL_NAME_AUTH_MESSAGE); }); it("normalizes publisher login-state failures", () => { expect(normalizePublisherErrorMessage("wangyihao_not_logged_in")).toBe( "网易号账号登录态已失效,请重新登录该平台后再重试。", ); expect(normalizePublisherErrorMessage("Error: weixin_gzh_not_logged_in")).toBe( "微信公众号账号登录态已失效,请重新登录该平台后再重试。", ); expect(normalizePublisherErrorMessage("qiehao_cookie_missing")).toBe( "企鹅号账号登录态已失效,请重新登录该平台后再重试。", ); }); it("uses a generic Chinese message for unknown publisher login-state failures", () => { expect(normalizePublisherLoginErrorMessage("unknown_platform_not_logged_in")).toBe( PUBLISH_ACCOUNT_NOT_LOGGED_IN_MESSAGE, ); }); it("normalizes Wangyihao token missing failures", () => { expect(normalizePublisherErrorMessage("wangyihao_token_missing")).toBe(WANGYIHAO_TOKEN_MISSING_MESSAGE); expect(normalizeWangyihaoPublishErrorMessage("Error: wangyihao_token_missing")).toBe( WANGYIHAO_TOKEN_MISSING_MESSAGE, ); }); it("normalizes Wangyihao draft parameter failures", () => { expect(normalizePublisherErrorMessage("wangyihao_draft_save_failed:wangyihao_error_100002")).toBe( WANGYIHAO_DRAFT_SAVE_PARAMETER_MESSAGE, ); expect(normalizeWangyihaoPublishErrorMessage("wangyihao_draft_save_failed:参数错误")).toBe( WANGYIHAO_DRAFT_SAVE_PARAMETER_MESSAGE, ); }); it("normalizes Wangyihao publish click failures", () => { expect(normalizePublisherErrorMessage("wangyihao_publish_click_failed")).toBe( WANGYIHAO_PUBLISH_CLICK_MESSAGE, ); expect(normalizeWangyihaoPublishErrorMessage("wangyihao_publish_click_failed:未找到发布按钮")).toBe( WANGYIHAO_PUBLISH_CLICK_MESSAGE, ); }); it("normalizes Weixin GZH missing public URL failures", () => { expect(normalizePublisherErrorMessage("weixin_gzh_public_url_missing:100000093")).toBe( WEIXIN_GZH_PUBLIC_URL_MISSING_MESSAGE, ); expect(normalizeWeixinGzhPublishErrorMessage("Error: weixin_gzh_public_url_missing")).toBe( WEIXIN_GZH_PUBLIC_URL_MISSING_MESSAGE, ); }); it("leaves unknown publisher errors unchanged", () => { expect(normalizePublisherErrorMessage("qiehao_publish_failed")).toBe("qiehao_publish_failed"); }); });