import { ANTIGRAVITY_DEFAULT_MODEL, ProviderDriverKind, ProviderInstanceId, type ServerProvider,} from "@t3tools/contracts";import { describe, expect, it } from "vite-plus/test"; import { deriveProviderInstanceEntries } from "../../providerInstances";import { resolveModelPickerSelectedModel, shouldIncludeModelPickerOption, shouldOfferModelPickerSetup,} from "./ModelPickerContent"; function entry(status: ServerProvider["status"], driver = "opencode") { return deriveProviderInstanceEntries([ { instanceId: ProviderInstanceId.make(`${driver}_work`), driver: ProviderDriverKind.make(driver), enabled: true, installed: true, version: null, status, auth: { status: "authenticated" }, checkedAt: "2026-08-28T00:00:00.000Z", models: [], slashCommands: [], skills: [], }, ])[0]!;} describe("shouldIncludeModelPickerOption", () => { it.each(["ready", "error"] as const)( "never offers the internal Antigravity default marker as a model when %s", (status) => { const providerEntry = entry(status, "antigravity"); expect( shouldIncludeModelPickerOption({ entry: providerEntry, option: { slug: ANTIGRAVITY_DEFAULT_MODEL, name: ANTIGRAVITY_DEFAULT_MODEL, isUnavailable: true, }, activeInstanceId: providerEntry.instanceId, activeModel: ANTIGRAVITY_DEFAULT_MODEL, }), ).toBe(false); }, ); it.each([ ["opencode", "error"], ["opencode", "warning"], ["antigravity", "error"], ["antigravity", "warning"], ] as const)( "keeps only the active synthetic %s row when the provider status is %s", (driver, status) => { const providerEntry = entry(status, driver); const activeInstanceId = providerEntry.instanceId; const activeModel = "missing-model"; expect( shouldIncludeModelPickerOption({ entry: providerEntry, option: { slug: activeModel, name: activeModel, isUnavailable: true, }, activeInstanceId, activeModel, }), ).toBe(true); expect( shouldIncludeModelPickerOption({ entry: providerEntry, option: { slug: "stale/model", name: "Stale model" }, activeInstanceId, activeModel, }), ).toBe(false); expect( shouldIncludeModelPickerOption({ entry: providerEntry, option: { slug: "other/missing", name: "Other missing", isUnavailable: true, }, activeInstanceId, activeModel, }), ).toBe(false); expect( shouldIncludeModelPickerOption({ entry: providerEntry, option: { slug: activeModel, name: activeModel, isUnavailable: true }, activeInstanceId: ProviderInstanceId.make(`${driver}_personal`), activeModel, }), ).toBe(false); }, );}); describe("resolveModelPickerSelectedModel", () => { it("follows the catalog default for the marker but keeps an explicit native model", () => { const driverKind = ProviderDriverKind.make("antigravity"); const previousOptions = [ { slug: "gemini-fast", name: "Gemini Fast", aliases: [ANTIGRAVITY_DEFAULT_MODEL] }, { slug: "gemini-pro", name: "Gemini Pro" }, ]; const nextOptions = [ { slug: "gemini-fast", name: "Gemini Fast" }, { slug: "gemini-pro", name: "Gemini Pro", aliases: [ANTIGRAVITY_DEFAULT_MODEL] }, ]; expect( resolveModelPickerSelectedModel({ driverKind, model: ANTIGRAVITY_DEFAULT_MODEL, options: previousOptions, })?.slug, ).toBe("gemini-fast"); expect( resolveModelPickerSelectedModel({ driverKind, model: ANTIGRAVITY_DEFAULT_MODEL, options: nextOptions, })?.slug, ).toBe("gemini-pro"); expect( resolveModelPickerSelectedModel({ driverKind, model: "gemini-fast", options: nextOptions, })?.slug, ).toBe("gemini-fast"); }); it("does not guess the default from the first model in a catalog", () => { expect( resolveModelPickerSelectedModel({ driverKind: ProviderDriverKind.make("antigravity"), model: ANTIGRAVITY_DEFAULT_MODEL, options: [{ slug: "gemini-fast", name: "Gemini Fast" }], }), ).toBeUndefined(); });}); describe("shouldOfferModelPickerSetup", () => { const availableModel = { slug: "gemini-3.1-pro", name: "Gemini 3.1 Pro" }; it("offers setup before an Antigravity account has models", () => { expect(shouldOfferModelPickerSetup(entry("error", "antigravity"), [])).toBe(true); }); it("offers setup after sign-out even if a model remains cached", () => { const providerEntry = entry("ready", "antigravity"); expect( shouldOfferModelPickerSetup( { ...providerEntry, snapshot: { ...providerEntry.snapshot, auth: { status: "unauthenticated" } }, }, [availableModel], ), ).toBe(true); }); it("offers setup when the only model is an unavailable saved selection", () => { expect( shouldOfferModelPickerSetup(entry("ready", "antigravity"), [ { ...availableModel, isUnavailable: true }, ]), ).toBe(true); }); it("does not offer setup for a ready account with available models", () => { expect(shouldOfferModelPickerSetup(entry("ready", "antigravity"), [availableModel])).toBe( false, ); }); it("does not restore a disabled provider while its status snapshot is stale", () => { expect( shouldOfferModelPickerSetup({ ...entry("error", "antigravity"), enabled: false }, []), ).toBe(false); }); it("keeps providers without integrated setup on their existing path", () => { expect(shouldOfferModelPickerSetup(entry("error", "codex"), [])).toBe(false); }); it("uses the environment's setup capability for other drivers", () => { const providerEntry = entry("error", "custom_driver"); expect( shouldOfferModelPickerSetup( { ...providerEntry, snapshot: { ...providerEntry.snapshot, setup: { canAuthenticate: true, canInstall: false }, }, }, [], ), ).toBe(true); });});
import {
ANTIGRAVITY_DEFAULT_MODEL,
ProviderDriverKind,
ProviderInstanceId,
type ServerProvider,
} from "@t3tools/contracts";
import { describe, expect, it } from "vite-plus/test";
import { deriveProviderInstanceEntries } from "../../providerInstances";
import {
resolveModelPickerSelectedModel,
shouldIncludeModelPickerOption,
shouldOfferModelPickerSetup,
} from "./ModelPickerContent";
function entry(status: ServerProvider["status"], driver = "opencode") {
return deriveProviderInstanceEntries([
{
instanceId: ProviderInstanceId.make(`${driver}_work`),
driver: ProviderDriverKind.make(driver),
enabled: true,
installed: true,
version: null,
status,
auth: { status: "authenticated" },
checkedAt: "2026-08-28T00:00:00.000Z",
models: [],
slashCommands: [],
skills: [],
},
])[0]!;
}
describe("shouldIncludeModelPickerOption", () => {
it.each(["ready", "error"] as const)(
"never offers the internal Antigravity default marker as a model when %s",
(status) => {
const providerEntry = entry(status, "antigravity");
expect(
shouldIncludeModelPickerOption({
entry: providerEntry,
option: {
slug: ANTIGRAVITY_DEFAULT_MODEL,
name: ANTIGRAVITY_DEFAULT_MODEL,
isUnavailable: true,
},
activeInstanceId: providerEntry.instanceId,
activeModel: ANTIGRAVITY_DEFAULT_MODEL,
}),
).toBe(false);
},
);
it.each([
["opencode", "error"],
["opencode", "warning"],
["antigravity", "error"],
["antigravity", "warning"],
] as const)(
"keeps only the active synthetic %s row when the provider status is %s",
(driver, status) => {
const providerEntry = entry(status, driver);
const activeInstanceId = providerEntry.instanceId;
const activeModel = "missing-model";
expect(
shouldIncludeModelPickerOption({
entry: providerEntry,
option: {
slug: activeModel,
name: activeModel,
isUnavailable: true,
},
activeInstanceId,
activeModel,
}),
).toBe(true);
expect(
shouldIncludeModelPickerOption({
entry: providerEntry,
option: { slug: "stale/model", name: "Stale model" },
activeInstanceId,
activeModel,
}),
).toBe(false);
expect(
shouldIncludeModelPickerOption({
entry: providerEntry,
option: {
slug: "other/missing",
name: "Other missing",
isUnavailable: true,
},
activeInstanceId,
activeModel,
}),
).toBe(false);
expect(
shouldIncludeModelPickerOption({
entry: providerEntry,
option: { slug: activeModel, name: activeModel, isUnavailable: true },
activeInstanceId: ProviderInstanceId.make(`${driver}_personal`),
activeModel,
}),
).toBe(false);
},
);
});
describe("resolveModelPickerSelectedModel", () => {
it("follows the catalog default for the marker but keeps an explicit native model", () => {
const driverKind = ProviderDriverKind.make("antigravity");
const previousOptions = [
{ slug: "gemini-fast", name: "Gemini Fast", aliases: [ANTIGRAVITY_DEFAULT_MODEL] },
{ slug: "gemini-pro", name: "Gemini Pro" },
];
const nextOptions = [
{ slug: "gemini-fast", name: "Gemini Fast" },
{ slug: "gemini-pro", name: "Gemini Pro", aliases: [ANTIGRAVITY_DEFAULT_MODEL] },
];
expect(
resolveModelPickerSelectedModel({
driverKind,
model: ANTIGRAVITY_DEFAULT_MODEL,
options: previousOptions,
})?.slug,
).toBe("gemini-fast");
expect(
resolveModelPickerSelectedModel({
driverKind,
model: ANTIGRAVITY_DEFAULT_MODEL,
options: nextOptions,
})?.slug,
).toBe("gemini-pro");
expect(
resolveModelPickerSelectedModel({
driverKind,
model: "gemini-fast",
options: nextOptions,
})?.slug,
).toBe("gemini-fast");
});
it("does not guess the default from the first model in a catalog", () => {
expect(
resolveModelPickerSelectedModel({
driverKind: ProviderDriverKind.make("antigravity"),
model: ANTIGRAVITY_DEFAULT_MODEL,
options: [{ slug: "gemini-fast", name: "Gemini Fast" }],
}),
).toBeUndefined();
});
});
describe("shouldOfferModelPickerSetup", () => {
const availableModel = { slug: "gemini-3.1-pro", name: "Gemini 3.1 Pro" };
it("offers setup before an Antigravity account has models", () => {
expect(shouldOfferModelPickerSetup(entry("error", "antigravity"), [])).toBe(true);
});
it("offers setup after sign-out even if a model remains cached", () => {
const providerEntry = entry("ready", "antigravity");
expect(
shouldOfferModelPickerSetup(
{
...providerEntry,
snapshot: { ...providerEntry.snapshot, auth: { status: "unauthenticated" } },
},
[availableModel],
),
).toBe(true);
});
it("offers setup when the only model is an unavailable saved selection", () => {
expect(
shouldOfferModelPickerSetup(entry("ready", "antigravity"), [
{ ...availableModel, isUnavailable: true },
]),
).toBe(true);
});
it("does not offer setup for a ready account with available models", () => {
expect(shouldOfferModelPickerSetup(entry("ready", "antigravity"), [availableModel])).toBe(
false,
);
});
it("does not restore a disabled provider while its status snapshot is stale", () => {
expect(
shouldOfferModelPickerSetup({ ...entry("error", "antigravity"), enabled: false }, []),
).toBe(false);
});
it("keeps providers without integrated setup on their existing path", () => {
expect(shouldOfferModelPickerSetup(entry("error", "codex"), [])).toBe(false);
});
it("uses the environment's setup capability for other drivers", () => {
const providerEntry = entry("error", "custom_driver");
expect(
shouldOfferModelPickerSetup(
{
...providerEntry,
snapshot: {
...providerEntry.snapshot,
setup: { canAuthenticate: true, canInstall: false },
},
},
[],
),
).toBe(true);
});
});