File size: 1,221 Bytes
fc93158
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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);
  });
});