discourse/plugins/discourse-ai/test/javascripts/unit/models/ai-agent-test.js
Jarek Radosz 893fcf714b
DEV: Remove plugin names from test titles (#39418)
Those are now automatically included in testem's output.
2026-04-21 19:19:52 +02:00

77 lines
2.3 KiB
JavaScript

import { module, test } from "qunit";
import AiAgent from "discourse/plugins/discourse-ai/discourse/admin/models/ai-agent";
module("Unit | Model | ai-agent", function () {
test("toPOJO", function (assert) {
const properties = {
mcp_server_tool_names: { 9: ["search_issues"] },
tools: [
["ToolName", { option1: "value1", option2: "value2" }, false],
"ToolName2",
"ToolName3",
],
};
const aiAgentPOJO = AiAgent.create(properties).toPOJO();
assert.deepEqual(aiAgentPOJO.tools, ["ToolName", "ToolName2", "ToolName3"]);
assert.strictEqual(aiAgentPOJO.toolOptions["ToolName"].option1, "value1");
assert.strictEqual(aiAgentPOJO.toolOptions["ToolName"].option2, "value2");
assert.deepEqual(aiAgentPOJO.mcp_server_tool_names, {
9: ["search_issues"],
});
});
test("fromPOJO", function (assert) {
const properties = {
id: 1,
name: "Test",
tools: [["ToolName", { option1: "value1" }, false]],
allowed_group_ids: [12],
system: false,
enabled: true,
system_prompt: "System Prompt",
priority: false,
description: "Description",
top_p: 0.8,
temperature: 0.7,
default_llm_id: 1,
force_default_llm: false,
user: null,
user_id: null,
max_context_posts: 5,
vision_enabled: true,
vision_max_pixels: 100,
rag_uploads: [],
rag_chunk_tokens: 374,
rag_chunk_overlap_tokens: 10,
rag_conversation_chunks: 10,
rag_llm_model_id: 1,
show_thinking: true,
forced_tool_count: -1,
allow_personal_messages: true,
allow_topic_mentions: true,
allow_chat_channel_mentions: true,
allow_chat_direct_messages: true,
mcp_server_ids: [3],
mcp_server_tool_names: { 3: ["search_issues"] },
};
const updatedValue = "updated";
const aiAgent = AiAgent.create({ ...properties });
const agentPOJO = aiAgent.toPOJO();
agentPOJO.toolOptions["ToolName"].option1 = updatedValue;
agentPOJO.forcedTools = "ToolName";
const updatedAgent = aiAgent.fromPOJO(agentPOJO);
assert.deepEqual(updatedAgent.tools, [
["ToolName", { option1: updatedValue }, true],
]);
assert.deepEqual(updatedAgent.mcp_server_tool_names, {
3: ["search_issues"],
});
});
});