Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
do_get_profile();
const { TOOLS, toolsConfig, RunSearch } = ChromeUtils.importESModule(
"moz-src:///browser/components/aiwindow/models/Tools.sys.mjs"
);
const { Chat } = ChromeUtils.importESModule(
"moz-src:///browser/components/aiwindow/models/Chat.sys.mjs"
);
add_task(async function test_run_search_registered_in_toolMap() {
Assert.strictEqual(
typeof Chat.toolMap.run_search,
"function",
"run_search should be registered in Chat.toolMap"
);
});
add_task(async function test_run_search_in_TOOLS_array() {
Assert.ok(
TOOLS.includes("run_search"),
"run_search should be in the TOOLS array"
);
});
add_task(async function test_run_search_tool_config_exists() {
const config = toolsConfig.find(t => t.function?.name === "run_search");
Assert.ok(config, "run_search tool config should exist in toolsConfig");
Assert.equal(config.type, "function", "Tool type should be 'function'");
const params = config.function.parameters;
Assert.ok(params.properties.query, "Should have a query parameter");
Assert.equal(
params.properties.query.type,
"string",
"query should be a string"
);
Assert.ok(params.required.includes("query"), "query should be required");
});
add_task(async function test_run_search_empty_query_returns_error() {
const result = await RunSearch.runSearch({ query: "" });
Assert.ok(
result.includes("Error"),
"Empty query should return an error string"
);
});
add_task(async function test_run_search_null_query_returns_error() {
const result = await RunSearch.runSearch({ query: null });
Assert.ok(
result.includes("Error"),
"Null query should return an error string"
);
});
add_task(async function test_run_search_whitespace_query_returns_error() {
const result = await RunSearch.runSearch({ query: " " });
Assert.ok(
result.includes("Error"),
"Whitespace-only query should return an error string"
);
});
add_task(async function test_run_search_no_browsingContext_returns_error() {
const result = await RunSearch.runSearch({ query: "test query" });
Assert.ok(
result.includes("Error"),
"No browsingContext should return an error string"
);
Assert.ok(
result.includes("no browsingContext provided"),
"Error should mention no browsingContext provided"
);
});
add_task(async function test_run_search_closed_window_returns_error() {
const result = await RunSearch.runSearch(
{ query: "test query" },
{ browsingContext: { topChromeWindow: { closed: true } } }
);
Assert.ok(
result.includes("Error"),
"Closed window should return an error string"
);
Assert.ok(
result.includes("not available or closed"),
"Error should mention window not available or closed"
);
});
add_task(
async function test_run_search_uses_context_browsingContext_when_provided() {
const result = await RunSearch.runSearch(
{ query: "test query" },
{ browsingContext: { topChromeWindow: { closed: true } } }
);
Assert.ok(
result.includes("Error"),
"Closed window from browsingContext should return an error string"
);
}
);