| import { Command } from "commander"; |
| import { describe, expect, it } from "vitest"; |
| import type { ProgramContext } from "./context.js"; |
| import { getProgramContext, setProgramContext } from "./program-context.js"; |
|
|
| function makeCtx(version: string): ProgramContext { |
| return { |
| programVersion: version, |
| channelOptions: ["telegram"], |
| messageChannelOptions: "telegram", |
| agentChannelOptions: "last|telegram", |
| }; |
| } |
|
|
| describe("program context storage", () => { |
| it("stores and retrieves context on a command instance", () => { |
| const program = new Command(); |
| const ctx = makeCtx("1.2.3"); |
| setProgramContext(program, ctx); |
| expect(getProgramContext(program)).toBe(ctx); |
| }); |
|
|
| it("returns undefined when no context was set", () => { |
| expect(getProgramContext(new Command())).toBeUndefined(); |
| }); |
|
|
| it("does not leak context between command instances", () => { |
| const programA = new Command(); |
| const programB = new Command(); |
| const ctxA = makeCtx("a"); |
| const ctxB = makeCtx("b"); |
| setProgramContext(programA, ctxA); |
| setProgramContext(programB, ctxB); |
|
|
| expect(getProgramContext(programA)).toBe(ctxA); |
| expect(getProgramContext(programB)).toBe(ctxB); |
| }); |
| }); |
|
|