128 lines
3.4 KiB
JavaScript
128 lines
3.4 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("init properties", function (assert) {
|
|
const properties = {
|
|
commands: [
|
|
["CommandName", { option1: "value1", option2: "value2" }],
|
|
"CommandName2",
|
|
"CommandName3",
|
|
],
|
|
};
|
|
|
|
const aiPersona = AiPersona.create(properties);
|
|
|
|
assert.deepEqual(aiPersona.commands, [
|
|
"CommandName",
|
|
"CommandName2",
|
|
"CommandName3",
|
|
]);
|
|
assert.equal(
|
|
aiPersona.getCommandOption("CommandName", "option1").value,
|
|
"value1"
|
|
);
|
|
assert.equal(
|
|
aiPersona.getCommandOption("CommandName", "option2").value,
|
|
"value2"
|
|
);
|
|
});
|
|
|
|
test("update properties", function (assert) {
|
|
const properties = {
|
|
id: 1,
|
|
name: "Test",
|
|
commands: ["CommandName"],
|
|
allowed_group_ids: [12],
|
|
system: false,
|
|
enabled: true,
|
|
system_prompt: "System Prompt",
|
|
priority: false,
|
|
description: "Description",
|
|
top_p: 0.8,
|
|
temperature: 0.7,
|
|
mentionable: false,
|
|
default_llm: "Default LLM",
|
|
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,
|
|
question_consolidator_llm: "Question Consolidator LLM",
|
|
allow_chat: false,
|
|
};
|
|
|
|
const aiPersona = AiPersona.create({ ...properties });
|
|
|
|
aiPersona.getCommandOption("CommandName", "option1").value = "value1";
|
|
|
|
const updatedProperties = aiPersona.updateProperties();
|
|
|
|
// perform remapping for save
|
|
properties.commands = [["CommandName", { option1: "value1" }]];
|
|
|
|
assert.deepEqual(updatedProperties, properties);
|
|
});
|
|
|
|
test("create properties", function (assert) {
|
|
const properties = {
|
|
id: 1,
|
|
name: "Test",
|
|
commands: ["CommandName"],
|
|
allowed_group_ids: [12],
|
|
system: false,
|
|
enabled: true,
|
|
system_prompt: "System Prompt",
|
|
priority: false,
|
|
description: "Description",
|
|
top_p: 0.8,
|
|
temperature: 0.7,
|
|
user: null,
|
|
user_id: null,
|
|
default_llm: "Default LLM",
|
|
mentionable: false,
|
|
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,
|
|
question_consolidator_llm: "Question Consolidator LLM",
|
|
allow_chat: false,
|
|
};
|
|
|
|
const aiPersona = AiPersona.create({ ...properties });
|
|
|
|
aiPersona.getCommandOption("CommandName", "option1").value = "value1";
|
|
|
|
const createdProperties = aiPersona.createProperties();
|
|
|
|
properties.commands = [["CommandName", { option1: "value1" }]];
|
|
|
|
assert.deepEqual(createdProperties, properties);
|
|
});
|
|
|
|
test("working copy", function (assert) {
|
|
const aiPersona = AiPersona.create({
|
|
name: "Test",
|
|
commands: ["CommandName"],
|
|
});
|
|
|
|
aiPersona.getCommandOption("CommandName", "option1").value = "value1";
|
|
|
|
const workingCopy = aiPersona.workingCopy();
|
|
|
|
assert.equal(workingCopy.name, "Test");
|
|
assert.equal(
|
|
workingCopy.getCommandOption("CommandName", "option1").value,
|
|
"value1"
|
|
);
|
|
assert.deepEqual(workingCopy.commands, ["CommandName"]);
|
|
});
|
|
});
|