kaikai_test/test/retry-queue.test.js
2026-05-14 18:53:53 +08:00

75 lines
1.9 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import test from "node:test";
import assert from "node:assert/strict";
import { retryableStatuses, pendingRetryItems } from "../src/retryQueue.js";
test("retry queue includes platforms whose latest result is not final", () => {
const history = {
programs: {
"百变职喵": {
name: "百变职喵",
runs: ["2026-05-12T00:00:00.000Z"],
platforms: {
tencent: {
values: {
"2026-05-12T00:00:00.000Z": { status: "ok", number: 123 },
},
},
iqiyi: {
values: {
"2026-05-12T00:00:00.000Z": { status: "no_match", error: "not online yet" },
},
},
mgtv: {
values: {
"2026-05-12T00:00:00.000Z": { status: "no_metric", url: "https://www.mgtv.com/h/1.html" },
},
},
},
},
},
};
assert.deepEqual(pendingRetryItems(history), [
{
name: "百变职喵",
platforms: ["iqiyi", "mgtv"],
reason: "爱奇艺:no_match芒果TV:no_metric",
},
]);
});
test("retry queue treats blocked and error as retryable but skips healthy latest values", () => {
assert.deepEqual([...retryableStatuses], ["no_match", "no_metric", "blocked", "error"]);
const history = {
programs: {
"星愿甜心": {
name: "星愿甜心",
runs: ["old", "new"],
platforms: {
youku: {
values: {
old: { status: "error" },
new: { status: "ok", number: 500 },
},
},
iqiyi: {
values: {
old: { status: "ok", number: 100 },
new: { status: "blocked", error: "captcha" },
},
},
},
},
},
};
assert.deepEqual(pendingRetryItems(history), [
{
name: "星愿甜心",
platforms: ["iqiyi"],
reason: "爱奇艺:blocked",
},
]);
});