import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; import { describe, expect, it } from "vitest"; import { readTelegramUpdateOffset, writeTelegramUpdateOffset } from "./update-offset-store.js"; async function withTempStateDir(fn: (dir: string) => Promise) { const previous = process.env.CLAWDBOT_STATE_DIR; const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-telegram-")); process.env.CLAWDBOT_STATE_DIR = dir; try { return await fn(dir); } finally { if (previous === undefined) delete process.env.CLAWDBOT_STATE_DIR; else process.env.CLAWDBOT_STATE_DIR = previous; await fs.rm(dir, { recursive: true, force: true }); } } describe("telegram update offset store", () => { it("persists and reloads the last update id", async () => { await withTempStateDir(async () => { expect(await readTelegramUpdateOffset({ accountId: "primary" })).toBeNull(); await writeTelegramUpdateOffset({ accountId: "primary", updateId: 421, }); expect(await readTelegramUpdateOffset({ accountId: "primary" })).toBe(421); }); }); });