mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-07 19:50:42 +00:00
43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { resolveThreadBindingLifecycle } from "./thread-binding-lifecycle.js";
|
|
|
|
describe("resolveThreadBindingLifecycle", () => {
|
|
it("prefers the earliest idle or max-age expiration", () => {
|
|
expect(
|
|
resolveThreadBindingLifecycle({
|
|
record: {
|
|
boundAt: 100,
|
|
lastActivityAt: 300,
|
|
idleTimeoutMs: 50,
|
|
maxAgeMs: 1_000,
|
|
},
|
|
defaultIdleTimeoutMs: 24 * 60 * 60 * 1000,
|
|
defaultMaxAgeMs: 0,
|
|
}),
|
|
).toEqual({ expiresAt: 350, reason: "idle-expired" });
|
|
|
|
expect(
|
|
resolveThreadBindingLifecycle({
|
|
record: {
|
|
boundAt: 100,
|
|
lastActivityAt: 300,
|
|
idleTimeoutMs: 1_000,
|
|
maxAgeMs: 150,
|
|
},
|
|
defaultIdleTimeoutMs: 24 * 60 * 60 * 1000,
|
|
defaultMaxAgeMs: 0,
|
|
}),
|
|
).toEqual({ expiresAt: 250, reason: "max-age-expired" });
|
|
});
|
|
|
|
it("uses defaults when record-level timeouts are absent", () => {
|
|
expect(
|
|
resolveThreadBindingLifecycle({
|
|
record: { boundAt: 100, lastActivityAt: 300 },
|
|
defaultIdleTimeoutMs: 200,
|
|
defaultMaxAgeMs: 0,
|
|
}),
|
|
).toEqual({ expiresAt: 500, reason: "idle-expired" });
|
|
});
|
|
});
|