





















1-import { describe, expect, it } from "vitest";
1+import { afterEach, describe, expect, it, vi } from "vitest";
22import { __testing as zaloTesting } from "./zalo-js.js";
334+afterEach(() => {
5+vi.useRealTimers();
6+});
7+48describe("Zalo quote metadata extraction (#86851)", () => {
59it("extracts quote id, owner, and body from zca-js message data", () => {
610const message = zaloTesting.toInboundMessage(
@@ -43,3 +47,31 @@ describe("Zalo quote metadata extraction (#86851)", () => {
4347expect(message?.quotedBody).toBeUndefined();
4448});
4549});
50+51+describe("Zalo inbound timestamp normalization", () => {
52+function inboundTimestamp(ts: unknown): number | undefined {
53+return zaloTesting.toInboundMessage({
54+type: 0,
55+data: {
56+uidFrom: "123456789",
57+idTo: "987654321",
58+content: "plain message",
59+ ts,
60+},
61+} as unknown as Parameters<typeof zaloTesting.toInboundMessage>[0])?.timestampMs;
62+}
63+64+it("normalizes second and millisecond timestamps", () => {
65+expect(inboundTimestamp(1_764_000_000)).toBe(1_764_000_000_000);
66+expect(inboundTimestamp("1764000000.5")).toBe(1_764_000_000_500);
67+expect(inboundTimestamp(1_764_000_000_000)).toBe(1_764_000_000_000);
68+});
69+70+it("falls back for partial or unsafe timestamps", () => {
71+vi.useFakeTimers();
72+vi.setSystemTime(1_700_000_000_000);
73+74+expect(inboundTimestamp("1764000000abc")).toBe(1_700_000_000_000);
75+expect(inboundTimestamp("9007199254740993")).toBe(1_700_000_000_000);
76+});
77+});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。