test: cover session-scoped model overrides (#74265)

This commit is contained in:
Peter Steinberger
2026-04-29 11:46:53 +01:00
committed by GitHub
parent e5a5ea1072
commit 7be65cd798
2 changed files with 48 additions and 0 deletions

View File

@@ -760,6 +760,30 @@ describe("handleDirectiveOnly model persist behavior (fixes #1435)", () => {
expect(sessionEntry.liveModelSwitchPending).toBe(true);
});
it("persists /model only on the targeted session entry", async () => {
const targetEntry = createSessionEntry();
const otherEntry = createSessionEntry();
const sessionStore = {
[sessionKey]: targetEntry,
"agent:main:dm:other": otherEntry,
};
await handleDirectiveOnly(
createHandleParams({
directives: parseInlineDirectives("/model openai/gpt-4o"),
sessionEntry: targetEntry,
sessionStore,
}),
);
expect(targetEntry.providerOverride).toBe("openai");
expect(targetEntry.modelOverride).toBe("gpt-4o");
expect(targetEntry.modelOverrideSource).toBe("user");
expect(otherEntry.providerOverride).toBeUndefined();
expect(otherEntry.modelOverride).toBeUndefined();
expect(otherEntry.modelOverrideSource).toBeUndefined();
});
it("remaps unsupported stored thinking levels when persisting a model switch", async () => {
const sessionEntry = createSessionEntry({ thinkingLevel: "adaptive" });
const { persisted } = await persistModelDirectiveForTest({

View File

@@ -320,6 +320,30 @@ describe("cron model formatting and precedence edge cases", () => {
it("falls through to default when no override is present", async () => {
await expectDefaultSelectedModel();
});
it("does not treat another chat session /model override as a global cron default", async () => {
const chatSessionAfterModelDirective = {
providerOverride: "openai",
modelOverride: "gpt-4.1-mini",
};
await expectSelectedModel(
{ sessionEntry: chatSessionAfterModelDirective },
{ provider: "openai", model: "gpt-4.1-mini" },
);
await expectDefaultSelectedModel({ sessionEntry: {} });
await expectSelectedModel(
{
sessionEntry: {},
payload: {
kind: "agentTurn",
message: DEFAULT_MESSAGE,
model: "anthropic/claude-sonnet-4-6",
},
},
{ provider: "anthropic", model: "claude-sonnet-4-6" },
);
});
});
describe("sequential model switches (CI failure regression)", () => {