Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test runs only with pattern: os != 'android'
- Manifest: browser/components/aiwindow/ui/test/xpcshell/xpcshell.toml
/* Any copyright is dedicated to the Public Domain.
do_get_profile();
const { ChatConversation, MESSAGE_ROLE } = ChromeUtils.importESModule(
"moz-src:///browser/components/aiwindow/ui/modules/ChatStore.sys.mjs"
);
const { SYSTEM_PROMPT_TYPE } = ChromeUtils.importESModule(
"moz-src:///browser/components/aiwindow/ui/modules/ChatEnums.sys.mjs"
);
const { _setLoadPromptForTesting } = ChromeUtils.importESModule(
"moz-src:///browser/components/aiwindow/ui/modules/ChatConversation.sys.mjs"
);
add_task(async function test_ChatConversation_updateSystemPromptForModel() {
_setLoadPromptForTesting(async () => "Updated system prompt");
registerCleanupFunction(() => _setLoadPromptForTesting(null));
const conversation = new ChatConversation({});
conversation.addSystemMessage(
SYSTEM_PROMPT_TYPE.TEXT,
"Initial system prompt"
);
await conversation.updateSystemPromptForModel("1");
const systemMessage = conversation.messages.find(
message =>
message.role === MESSAGE_ROLE.SYSTEM &&
message.content.type === SYSTEM_PROMPT_TYPE.TEXT
);
Assert.equal(
systemMessage.content.body,
"Updated system prompt",
"System prompt should be updated to new prompt"
);
});
add_task(
async function test_ChatConversation_updateSystemPromptForModel_preserves_messages() {
_setLoadPromptForTesting(async () => "Updated system prompt");
const conversation = new ChatConversation({});
const mockMessages = [
{ role: MESSAGE_ROLE.USER, body: "Hello" },
{ role: MESSAGE_ROLE.ASSISTANT, body: "Hello back" },
{ role: MESSAGE_ROLE.USER, body: "How are you?" },
];
conversation.addSystemMessage(
SYSTEM_PROMPT_TYPE.TEXT,
"Original system prompt"
);
conversation.addUserMessage(mockMessages[0].body, null);
conversation.addAssistantMessage("text", mockMessages[1].body);
conversation.addUserMessage(mockMessages[2].body, null);
await conversation.updateSystemPromptForModel("1");
const nonSystemMessages = conversation.messages.filter(
message => message.role !== MESSAGE_ROLE.SYSTEM
);
Assert.deepEqual(
nonSystemMessages.map(message => ({
role: message.role,
body: message.content.body,
})),
mockMessages,
"Non-system messages should be preserved"
);
}
);