mirror of
https://github.com/farcasclaudiu/openclaw.git
synced 2026-06-28 23:02:02 +03:00
refactor(test): dedupe cron isolated-agent e2e setup
This commit is contained in:
@@ -33,9 +33,9 @@ function makeDeps(): CliDeps {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function mockEmbeddedOk() {
|
function mockEmbeddedTexts(texts: string[]) {
|
||||||
vi.mocked(runEmbeddedPiAgent).mockResolvedValue({
|
vi.mocked(runEmbeddedPiAgent).mockResolvedValue({
|
||||||
payloads: [{ text: "ok" }],
|
payloads: texts.map((text) => ({ text })),
|
||||||
meta: {
|
meta: {
|
||||||
durationMs: 5,
|
durationMs: 5,
|
||||||
agentMeta: { sessionId: "s", provider: "p", model: "m" },
|
agentMeta: { sessionId: "s", provider: "p", model: "m" },
|
||||||
@@ -43,6 +43,10 @@ function mockEmbeddedOk() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function mockEmbeddedOk() {
|
||||||
|
mockEmbeddedTexts(["ok"]);
|
||||||
|
}
|
||||||
|
|
||||||
function expectEmbeddedProviderModel(expected: { provider: string; model: string }) {
|
function expectEmbeddedProviderModel(expected: { provider: string; model: string }) {
|
||||||
const call = vi.mocked(runEmbeddedPiAgent).mock.calls[0]?.[0] as {
|
const call = vi.mocked(runEmbeddedPiAgent).mock.calls[0]?.[0] as {
|
||||||
provider?: string;
|
provider?: string;
|
||||||
@@ -126,20 +130,8 @@ describe("runCronIsolatedAgentTurn", () => {
|
|||||||
it("treats blank model overrides as unset", async () => {
|
it("treats blank model overrides as unset", async () => {
|
||||||
await withTempHome(async (home) => {
|
await withTempHome(async (home) => {
|
||||||
const storePath = await writeSessionStore(home);
|
const storePath = await writeSessionStore(home);
|
||||||
const deps: CliDeps = {
|
const deps = makeDeps();
|
||||||
sendMessageWhatsApp: vi.fn(),
|
mockEmbeddedOk();
|
||||||
sendMessageTelegram: vi.fn(),
|
|
||||||
sendMessageDiscord: vi.fn(),
|
|
||||||
sendMessageSignal: vi.fn(),
|
|
||||||
sendMessageIMessage: vi.fn(),
|
|
||||||
};
|
|
||||||
vi.mocked(runEmbeddedPiAgent).mockResolvedValue({
|
|
||||||
payloads: [{ text: "ok" }],
|
|
||||||
meta: {
|
|
||||||
durationMs: 5,
|
|
||||||
agentMeta: { sessionId: "s", provider: "p", model: "m" },
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const res = await runCronIsolatedAgentTurn({
|
const res = await runCronIsolatedAgentTurn({
|
||||||
cfg: makeCfg(home, storePath),
|
cfg: makeCfg(home, storePath),
|
||||||
@@ -158,20 +150,8 @@ describe("runCronIsolatedAgentTurn", () => {
|
|||||||
it("uses last non-empty agent text as summary", async () => {
|
it("uses last non-empty agent text as summary", async () => {
|
||||||
await withTempHome(async (home) => {
|
await withTempHome(async (home) => {
|
||||||
const storePath = await writeSessionStore(home);
|
const storePath = await writeSessionStore(home);
|
||||||
const deps: CliDeps = {
|
const deps = makeDeps();
|
||||||
sendMessageWhatsApp: vi.fn(),
|
mockEmbeddedTexts(["first", " ", " last "]);
|
||||||
sendMessageTelegram: vi.fn(),
|
|
||||||
sendMessageDiscord: vi.fn(),
|
|
||||||
sendMessageSignal: vi.fn(),
|
|
||||||
sendMessageIMessage: vi.fn(),
|
|
||||||
};
|
|
||||||
vi.mocked(runEmbeddedPiAgent).mockResolvedValue({
|
|
||||||
payloads: [{ text: "first" }, { text: " " }, { text: " last " }],
|
|
||||||
meta: {
|
|
||||||
durationMs: 5,
|
|
||||||
agentMeta: { sessionId: "s", provider: "p", model: "m" },
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const res = await runCronIsolatedAgentTurn({
|
const res = await runCronIsolatedAgentTurn({
|
||||||
cfg: makeCfg(home, storePath),
|
cfg: makeCfg(home, storePath),
|
||||||
@@ -190,20 +170,8 @@ describe("runCronIsolatedAgentTurn", () => {
|
|||||||
it("appends current time after the cron header line", async () => {
|
it("appends current time after the cron header line", async () => {
|
||||||
await withTempHome(async (home) => {
|
await withTempHome(async (home) => {
|
||||||
const storePath = await writeSessionStore(home);
|
const storePath = await writeSessionStore(home);
|
||||||
const deps: CliDeps = {
|
const deps = makeDeps();
|
||||||
sendMessageWhatsApp: vi.fn(),
|
mockEmbeddedOk();
|
||||||
sendMessageTelegram: vi.fn(),
|
|
||||||
sendMessageDiscord: vi.fn(),
|
|
||||||
sendMessageSignal: vi.fn(),
|
|
||||||
sendMessageIMessage: vi.fn(),
|
|
||||||
};
|
|
||||||
vi.mocked(runEmbeddedPiAgent).mockResolvedValue({
|
|
||||||
payloads: [{ text: "ok" }],
|
|
||||||
meta: {
|
|
||||||
durationMs: 5,
|
|
||||||
agentMeta: { sessionId: "s", provider: "p", model: "m" },
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
await runCronIsolatedAgentTurn({
|
await runCronIsolatedAgentTurn({
|
||||||
cfg: makeCfg(home, storePath),
|
cfg: makeCfg(home, storePath),
|
||||||
@@ -226,21 +194,9 @@ describe("runCronIsolatedAgentTurn", () => {
|
|||||||
|
|
||||||
it("uses agentId for workspace, session key, and store paths", async () => {
|
it("uses agentId for workspace, session key, and store paths", async () => {
|
||||||
await withTempHome(async (home) => {
|
await withTempHome(async (home) => {
|
||||||
const deps: CliDeps = {
|
const deps = makeDeps();
|
||||||
sendMessageWhatsApp: vi.fn(),
|
|
||||||
sendMessageTelegram: vi.fn(),
|
|
||||||
sendMessageDiscord: vi.fn(),
|
|
||||||
sendMessageSignal: vi.fn(),
|
|
||||||
sendMessageIMessage: vi.fn(),
|
|
||||||
};
|
|
||||||
const opsWorkspace = path.join(home, "ops-workspace");
|
const opsWorkspace = path.join(home, "ops-workspace");
|
||||||
vi.mocked(runEmbeddedPiAgent).mockResolvedValue({
|
mockEmbeddedOk();
|
||||||
payloads: [{ text: "ok" }],
|
|
||||||
meta: {
|
|
||||||
durationMs: 5,
|
|
||||||
agentMeta: { sessionId: "s", provider: "p", model: "m" },
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const cfg = makeCfg(
|
const cfg = makeCfg(
|
||||||
home,
|
home,
|
||||||
@@ -289,20 +245,8 @@ describe("runCronIsolatedAgentTurn", () => {
|
|||||||
it("uses model override when provided", async () => {
|
it("uses model override when provided", async () => {
|
||||||
await withTempHome(async (home) => {
|
await withTempHome(async (home) => {
|
||||||
const storePath = await writeSessionStore(home);
|
const storePath = await writeSessionStore(home);
|
||||||
const deps: CliDeps = {
|
const deps = makeDeps();
|
||||||
sendMessageWhatsApp: vi.fn(),
|
mockEmbeddedOk();
|
||||||
sendMessageTelegram: vi.fn(),
|
|
||||||
sendMessageDiscord: vi.fn(),
|
|
||||||
sendMessageSignal: vi.fn(),
|
|
||||||
sendMessageIMessage: vi.fn(),
|
|
||||||
};
|
|
||||||
vi.mocked(runEmbeddedPiAgent).mockResolvedValue({
|
|
||||||
payloads: [{ text: "ok" }],
|
|
||||||
meta: {
|
|
||||||
durationMs: 5,
|
|
||||||
agentMeta: { sessionId: "s", provider: "p", model: "m" },
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const res = await runCronIsolatedAgentTurn({
|
const res = await runCronIsolatedAgentTurn({
|
||||||
cfg: makeCfg(home, storePath),
|
cfg: makeCfg(home, storePath),
|
||||||
@@ -318,12 +262,7 @@ describe("runCronIsolatedAgentTurn", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
expect(res.status).toBe("ok");
|
expect(res.status).toBe("ok");
|
||||||
const call = vi.mocked(runEmbeddedPiAgent).mock.calls[0]?.[0] as {
|
expectEmbeddedProviderModel({ provider: "openai", model: "gpt-4.1-mini" });
|
||||||
provider?: string;
|
|
||||||
model?: string;
|
|
||||||
};
|
|
||||||
expect(call?.provider).toBe("openai");
|
|
||||||
expect(call?.model).toBe("gpt-4.1-mini");
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -337,20 +276,8 @@ describe("runCronIsolatedAgentTurn", () => {
|
|||||||
modelOverride: "gpt-4.1-mini",
|
modelOverride: "gpt-4.1-mini",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const deps: CliDeps = {
|
const deps = makeDeps();
|
||||||
sendMessageWhatsApp: vi.fn(),
|
mockEmbeddedOk();
|
||||||
sendMessageTelegram: vi.fn(),
|
|
||||||
sendMessageDiscord: vi.fn(),
|
|
||||||
sendMessageSignal: vi.fn(),
|
|
||||||
sendMessageIMessage: vi.fn(),
|
|
||||||
};
|
|
||||||
vi.mocked(runEmbeddedPiAgent).mockResolvedValue({
|
|
||||||
payloads: [{ text: "ok" }],
|
|
||||||
meta: {
|
|
||||||
durationMs: 5,
|
|
||||||
agentMeta: { sessionId: "s", provider: "p", model: "m" },
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const res = await runCronIsolatedAgentTurn({
|
const res = await runCronIsolatedAgentTurn({
|
||||||
cfg: makeCfg(home, storePath),
|
cfg: makeCfg(home, storePath),
|
||||||
@@ -362,12 +289,7 @@ describe("runCronIsolatedAgentTurn", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
expect(res.status).toBe("ok");
|
expect(res.status).toBe("ok");
|
||||||
const call = vi.mocked(runEmbeddedPiAgent).mock.calls[0]?.[0] as {
|
expectEmbeddedProviderModel({ provider: "openai", model: "gpt-4.1-mini" });
|
||||||
provider?: string;
|
|
||||||
model?: string;
|
|
||||||
};
|
|
||||||
expect(call?.provider).toBe("openai");
|
|
||||||
expect(call?.model).toBe("gpt-4.1-mini");
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -381,20 +303,8 @@ describe("runCronIsolatedAgentTurn", () => {
|
|||||||
modelOverride: "gpt-4.1-mini",
|
modelOverride: "gpt-4.1-mini",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const deps: CliDeps = {
|
const deps = makeDeps();
|
||||||
sendMessageWhatsApp: vi.fn(),
|
mockEmbeddedOk();
|
||||||
sendMessageTelegram: vi.fn(),
|
|
||||||
sendMessageDiscord: vi.fn(),
|
|
||||||
sendMessageSignal: vi.fn(),
|
|
||||||
sendMessageIMessage: vi.fn(),
|
|
||||||
};
|
|
||||||
vi.mocked(runEmbeddedPiAgent).mockResolvedValue({
|
|
||||||
payloads: [{ text: "ok" }],
|
|
||||||
meta: {
|
|
||||||
durationMs: 5,
|
|
||||||
agentMeta: { sessionId: "s", provider: "p", model: "m" },
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const res = await runCronIsolatedAgentTurn({
|
const res = await runCronIsolatedAgentTurn({
|
||||||
cfg: makeCfg(home, storePath),
|
cfg: makeCfg(home, storePath),
|
||||||
@@ -411,12 +321,7 @@ describe("runCronIsolatedAgentTurn", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
expect(res.status).toBe("ok");
|
expect(res.status).toBe("ok");
|
||||||
const call = vi.mocked(runEmbeddedPiAgent).mock.calls[0]?.[0] as {
|
expectEmbeddedProviderModel({ provider: "anthropic", model: "claude-opus-4-5" });
|
||||||
provider?: string;
|
|
||||||
model?: string;
|
|
||||||
};
|
|
||||||
expect(call?.provider).toBe("anthropic");
|
|
||||||
expect(call?.model).toBe("claude-opus-4-5");
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -488,20 +393,8 @@ describe("runCronIsolatedAgentTurn", () => {
|
|||||||
it("wraps external hook content by default", async () => {
|
it("wraps external hook content by default", async () => {
|
||||||
await withTempHome(async (home) => {
|
await withTempHome(async (home) => {
|
||||||
const storePath = await writeSessionStore(home);
|
const storePath = await writeSessionStore(home);
|
||||||
const deps: CliDeps = {
|
const deps = makeDeps();
|
||||||
sendMessageWhatsApp: vi.fn(),
|
mockEmbeddedOk();
|
||||||
sendMessageTelegram: vi.fn(),
|
|
||||||
sendMessageDiscord: vi.fn(),
|
|
||||||
sendMessageSignal: vi.fn(),
|
|
||||||
sendMessageIMessage: vi.fn(),
|
|
||||||
};
|
|
||||||
vi.mocked(runEmbeddedPiAgent).mockResolvedValue({
|
|
||||||
payloads: [{ text: "ok" }],
|
|
||||||
meta: {
|
|
||||||
durationMs: 5,
|
|
||||||
agentMeta: { sessionId: "s", provider: "p", model: "m" },
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const res = await runCronIsolatedAgentTurn({
|
const res = await runCronIsolatedAgentTurn({
|
||||||
cfg: makeCfg(home, storePath),
|
cfg: makeCfg(home, storePath),
|
||||||
@@ -522,20 +415,8 @@ describe("runCronIsolatedAgentTurn", () => {
|
|||||||
it("skips external content wrapping when hooks.gmail opts out", async () => {
|
it("skips external content wrapping when hooks.gmail opts out", async () => {
|
||||||
await withTempHome(async (home) => {
|
await withTempHome(async (home) => {
|
||||||
const storePath = await writeSessionStore(home);
|
const storePath = await writeSessionStore(home);
|
||||||
const deps: CliDeps = {
|
const deps = makeDeps();
|
||||||
sendMessageWhatsApp: vi.fn(),
|
mockEmbeddedOk();
|
||||||
sendMessageTelegram: vi.fn(),
|
|
||||||
sendMessageDiscord: vi.fn(),
|
|
||||||
sendMessageSignal: vi.fn(),
|
|
||||||
sendMessageIMessage: vi.fn(),
|
|
||||||
};
|
|
||||||
vi.mocked(runEmbeddedPiAgent).mockResolvedValue({
|
|
||||||
payloads: [{ text: "ok" }],
|
|
||||||
meta: {
|
|
||||||
durationMs: 5,
|
|
||||||
agentMeta: { sessionId: "s", provider: "p", model: "m" },
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const res = await runCronIsolatedAgentTurn({
|
const res = await runCronIsolatedAgentTurn({
|
||||||
cfg: makeCfg(home, storePath, {
|
cfg: makeCfg(home, storePath, {
|
||||||
|
|||||||
Reference in New Issue
Block a user