discourse-ai/test/javascripts/unit/models/ai-persona-test.js

75 lines
2.1 KiB
JavaScript

import { module, test } from "qunit";
import AiPersona from "discourse/plugins/discourse-ai/discourse/admin/models/ai-persona";
module("Discourse AI | Unit | Model | ai-persona", function () {
test("toPOJO", function (assert) {
const properties = {
tools: [
["ToolName", { option1: "value1", option2: "value2" }, false],
"ToolName2",
"ToolName3",
],
};
const aiPersonaPOJO = AiPersona.create(properties).toPOJO();
assert.deepEqual(aiPersonaPOJO.tools, [
"ToolName",
"ToolName2",
"ToolName3",
]);
assert.equal(aiPersonaPOJO.toolOptions["ToolName"].option1, "value1");
assert.equal(aiPersonaPOJO.toolOptions["ToolName"].option2, "value2");
});
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,
question_consolidator_llm_id: 2,
allow_chat: false,
tool_details: true,
forced_tool_count: -1,
allow_personal_messages: true,
allow_topic_mentions: true,
allow_chat_channel_mentions: true,
allow_chat_direct_messages: true,
};
const updatedValue = "updated";
const aiPersona = AiPersona.create({ ...properties });
const personaPOJO = aiPersona.toPOJO();
personaPOJO.toolOptions["ToolName"].option1 = updatedValue;
personaPOJO.forcedTools = "ToolName";
const updatedPersona = aiPersona.fromPOJO(personaPOJO);
assert.deepEqual(updatedPersona.tools, [
["ToolName", { option1: updatedValue }, true],
]);
});
});