Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
do_get_profile();
const { openAIEngine } = ChromeUtils.importESModule(
"moz-src:///browser/components/aiwindow/models/Utils.sys.mjs"
);
const { getModelForChoice, getAllModelsData, getCurrentModelName } =
ChromeUtils.importESModule(
"moz-src:///browser/components/aiwindow/ui/modules/AIWindowConstants.sys.mjs"
);
const { sinon } = ChromeUtils.importESModule(
);
add_task(async function test_getModelForChoice_with_remote_settings_data() {
const sb = sinon.createSandbox();
try {
const fakeRecords = [
{
feature: "chat",
version: "2.19",
model: "qwen3-235b-a22b-instruct-2507-maas",
model_choice_id: "2",
owner_name: "Alibaba",
is_default: true,
},
{
feature: "chat",
version: "2.13",
model: "gemini-2.5-flash-lite",
model_choice_id: "1",
owner_name: "Google",
},
];
sb.stub(openAIEngine, "getRemoteClient").returns({
get: sb.stub().resolves(fakeRecords),
});
const result = await getModelForChoice("1");
Assert.deepEqual(
result,
{ model: "gemini-2.5-flash-lite", ownerName: "Google" },
"Should return correct model data for choice 1"
);
} finally {
sb.restore();
}
});
add_task(async function test_getModelForChoice_fallback_when_not_found() {
const sb = sinon.createSandbox();
try {
sb.stub(openAIEngine, "getRemoteClient").returns({
get: sb.stub().resolves([]),
});
const result = await getModelForChoice("1");
Assert.deepEqual(
result,
{ model: "gemini-2.5-flash-lite", ownerName: "Google" },
"Should return fallback data for choice 1"
);
} finally {
sb.restore();
}
});
add_task(async function test_getModelForChoice_custom_model() {
const result = await getModelForChoice("0");
Assert.deepEqual(
result,
{ model: "custom-model", ownerName: "" },
"Should return custom model data for choice 0"
);
});
add_task(async function test_getAllModelsData_with_remote_settings() {
const sb = sinon.createSandbox();
try {
const fakeRecords = [
{
feature: "chat",
version: "2.19",
model: "qwen3-235b-a22b-instruct-2507-maas",
model_choice_id: "2",
owner_name: "Alibaba",
is_default: true,
},
{
feature: "chat",
version: "2.13",
model: "gemini-2.5-flash-lite",
model_choice_id: "1",
owner_name: "Google",
},
{
feature: "chat",
version: "2.10",
model: "gpt-oss-120b",
model_choice_id: "3",
owner_name: "OpenAI",
},
];
sb.stub(openAIEngine, "getRemoteClient").returns({
get: sb.stub().resolves(fakeRecords),
});
const result = await getAllModelsData();
Assert.deepEqual(
result,
{
0: { model: "custom-model", ownerName: "" },
1: { model: "gemini-2.5-flash-lite", ownerName: "Google" },
2: {
model: "qwen3-235b-a22b-instruct-2507-maas",
ownerName: "Alibaba",
},
3: { model: "gpt-oss-120b", ownerName: "OpenAI" },
},
"Should return all model choices with correct data"
);
} finally {
sb.restore();
}
});
add_task(function test_getCurrentModelName_returns_fallback_for_known_choice() {
Services.prefs.setStringPref("browser.smartwindow.firstrun.modelChoice", "1");
Assert.equal(
getCurrentModelName(),
"gemini-2.5-flash-lite",
"Should return fallback model name for choice 1"
);
Services.prefs.clearUserPref("browser.smartwindow.firstrun.modelChoice");
});
add_task(function test_getCurrentModelName_returns_empty_when_no_choice() {
Services.prefs.clearUserPref("browser.smartwindow.firstrun.modelChoice");
Assert.equal(
getCurrentModelName(),
"",
"Should return empty string when no model choice is set"
);
});
add_task(async function test_getAllModelsData_with_fallbacks() {
const sb = sinon.createSandbox();
try {
const fakeRecords = [
{
feature: "chat",
version: "2.19",
model: "gemini-2.5-flash-lite",
model_choice_id: "1",
owner_name: "Google",
},
];
sb.stub(openAIEngine, "getRemoteClient").returns({
get: sb.stub().resolves(fakeRecords),
});
const result = await getAllModelsData();
Assert.deepEqual(
result,
{
0: { model: "custom-model", ownerName: "" },
1: { model: "gemini-2.5-flash-lite", ownerName: "Google" },
2: {
model: "qwen3-235b-a22b-instruct-2507-maas",
ownerName: "Alibaba",
},
3: { model: "gpt-oss-120b", ownerName: "OpenAI" },
},
"Should return all model choices with correct data"
);
} finally {
sb.restore();
}
});