mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-11 16:53:49 +00:00
test(perf): merge isolated-agent model precedence cases
This commit is contained in:
@@ -46,7 +46,7 @@ function mockEmbeddedOk() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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.at(-1)?.[0] as {
|
||||||
provider?: string;
|
provider?: string;
|
||||||
model?: string;
|
model?: string;
|
||||||
};
|
};
|
||||||
@@ -321,71 +321,65 @@ describe("runCronIsolatedAgentTurn", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("uses model override when provided", async () => {
|
it("applies model overrides with correct precedence", async () => {
|
||||||
await withTempHome(async (home) => {
|
await withTempHome(async (home) => {
|
||||||
const { res } = await runCronTurn(home, {
|
let res = (
|
||||||
|
await runCronTurn(home, {
|
||||||
jobPayload: {
|
jobPayload: {
|
||||||
kind: "agentTurn",
|
kind: "agentTurn",
|
||||||
message: DEFAULT_MESSAGE,
|
message: DEFAULT_MESSAGE,
|
||||||
model: "openai/gpt-4.1-mini",
|
model: "openai/gpt-4.1-mini",
|
||||||
},
|
},
|
||||||
});
|
})
|
||||||
|
).res;
|
||||||
expect(res.status).toBe("ok");
|
expect(res.status).toBe("ok");
|
||||||
expectEmbeddedProviderModel({ provider: "openai", model: "gpt-4.1-mini" });
|
expectEmbeddedProviderModel({ provider: "openai", model: "gpt-4.1-mini" });
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("uses stored session override when no job model override is provided", async () => {
|
vi.clearAllMocks();
|
||||||
await withTempHome(async (home) => {
|
res = (
|
||||||
const { res } = await runTurnWithStoredModelOverride(home, {
|
await runTurnWithStoredModelOverride(home, {
|
||||||
kind: "agentTurn",
|
kind: "agentTurn",
|
||||||
message: DEFAULT_MESSAGE,
|
message: DEFAULT_MESSAGE,
|
||||||
deliver: false,
|
deliver: false,
|
||||||
});
|
})
|
||||||
|
).res;
|
||||||
expect(res.status).toBe("ok");
|
expect(res.status).toBe("ok");
|
||||||
expectEmbeddedProviderModel({ provider: "openai", model: "gpt-4.1-mini" });
|
expectEmbeddedProviderModel({ provider: "openai", model: "gpt-4.1-mini" });
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("prefers job model override over stored session override", async () => {
|
vi.clearAllMocks();
|
||||||
await withTempHome(async (home) => {
|
res = (
|
||||||
const { res } = await runTurnWithStoredModelOverride(home, {
|
await runTurnWithStoredModelOverride(home, {
|
||||||
kind: "agentTurn",
|
kind: "agentTurn",
|
||||||
message: DEFAULT_MESSAGE,
|
message: DEFAULT_MESSAGE,
|
||||||
model: "anthropic/claude-opus-4-5",
|
model: "anthropic/claude-opus-4-5",
|
||||||
deliver: false,
|
deliver: false,
|
||||||
});
|
})
|
||||||
|
).res;
|
||||||
expect(res.status).toBe("ok");
|
expect(res.status).toBe("ok");
|
||||||
expectEmbeddedProviderModel({ provider: "anthropic", model: "claude-opus-4-5" });
|
expectEmbeddedProviderModel({ provider: "anthropic", model: "claude-opus-4-5" });
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("uses hooks.gmail.model for Gmail hook sessions", async () => {
|
it("uses hooks.gmail.model and keeps precedence over stored session override", async () => {
|
||||||
await withTempHome(async (home) => {
|
await withTempHome(async (home) => {
|
||||||
const { res } = await runGmailHookTurn(home);
|
let res = (await runGmailHookTurn(home)).res;
|
||||||
|
|
||||||
expect(res.status).toBe("ok");
|
expect(res.status).toBe("ok");
|
||||||
expectEmbeddedProviderModel({
|
expectEmbeddedProviderModel({
|
||||||
provider: "openrouter",
|
provider: "openrouter",
|
||||||
model: GMAIL_MODEL.replace("openrouter/", ""),
|
model: GMAIL_MODEL.replace("openrouter/", ""),
|
||||||
});
|
});
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("keeps hooks.gmail.model precedence over stored session override", async () => {
|
vi.clearAllMocks();
|
||||||
await withTempHome(async (home) => {
|
res = (
|
||||||
const { res } = await runGmailHookTurn(home, {
|
await runGmailHookTurn(home, {
|
||||||
"agent:main:hook:gmail:msg-1": {
|
"agent:main:hook:gmail:msg-1": {
|
||||||
sessionId: "existing-gmail-session",
|
sessionId: "existing-gmail-session",
|
||||||
updatedAt: Date.now(),
|
updatedAt: Date.now(),
|
||||||
providerOverride: "anthropic",
|
providerOverride: "anthropic",
|
||||||
modelOverride: "claude-opus-4-5",
|
modelOverride: "claude-opus-4-5",
|
||||||
},
|
},
|
||||||
});
|
})
|
||||||
|
).res;
|
||||||
expect(res.status).toBe("ok");
|
expect(res.status).toBe("ok");
|
||||||
expectEmbeddedProviderModel({
|
expectEmbeddedProviderModel({
|
||||||
provider: "openrouter",
|
provider: "openrouter",
|
||||||
|
|||||||
Reference in New Issue
Block a user