You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
2.0 KiB

import { describe, expect, it } from "vitest";
import {
PLACE_DIAG_COLLECT_SNAPSHOT,
PLACE_DIAG_SET_MARK,
P0_PLACE_DIAG_INIT,
P2_FETCH_HIJACK_INIT,
} from "@/workers/rpa/fix-place/place-diagnostic-init";
import { interpretPlaceDiagnostic } from "@/workers/rpa/fix-place/place-diagnostic-probe";
describe("place-diagnostic-init", () => {
it("P0/P2 脚本为纯字符串", () => {
for (const script of [
P0_PLACE_DIAG_INIT,
P2_FETCH_HIJACK_INIT,
PLACE_DIAG_SET_MARK,
PLACE_DIAG_COLLECT_SNAPSHOT,
]) {
expect(typeof script).toBe("string");
expect(script).not.toMatch(/__name|__assign/);
}
expect(P0_PLACE_DIAG_INIT).toContain("maps.event.addListener");
expect(P0_PLACE_DIAG_INIT).toContain("fingerprintHandler");
expect(P2_FETCH_HIJACK_INIT).toContain("axel/location/place");
});
});
describe("interpretPlaceDiagnostic", () => {
it("无监听器时提示 input gm 定位", () => {
const lines = interpretPlaceDiagnostic(
{
ok: true,
topology: { instanceCount: 0, instances: [], inputProbes: [], monkeyPatchInstances: 0, capturedHandlers: 0 },
listeners: { total: 0, anyHasFetch: false, anyHasAxelPlace: false, rows: [] },
handlerEvents: [],
fetchLog: [],
},
"test",
);
expect(lines.some((l) => l.includes("无任何 place_changed 监听器"))).toBe(true);
});
it("有 handler 无 fetch 时提示 P2", () => {
const lines = interpretPlaceDiagnostic(
{
ok: true,
topology: { instanceCount: 1, instances: [], inputProbes: [], monkeyPatchInstances: 1, capturedHandlers: 1 },
listeners: { total: 1, anyHasFetch: false, anyHasAxelPlace: false, rows: [] },
handlerEvents: [{ type: "place_changed_handler", instanceId: "ac-1", getPlaceBefore: { place_id: "ChIJ_test", hasGeometry: true } }],
fetchLog: [],
},
"test",
);
expect(lines.some((l) => l.includes("P2 无 place fetch"))).toBe(true);
});
});