71 lines
1.9 KiB
Go
71 lines
1.9 KiB
Go
package conversation
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"aichat/message"
|
|
)
|
|
|
|
func TestCreateWithPresetSavesPresetPrompt(t *testing.T) {
|
|
store := NewStore(t.TempDir())
|
|
conv, err := store.CreateWithPreset(" 你是测试助手 ")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if conv.PresetPrompt != "你是测试助手" {
|
|
t.Fatalf("preset_prompt = %q", conv.PresetPrompt)
|
|
}
|
|
loaded, err := store.Get(conv.ID)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if loaded.PresetPrompt != "你是测试助手" {
|
|
t.Fatalf("loaded preset_prompt = %q", loaded.PresetPrompt)
|
|
}
|
|
if len(loaded.Messages) != 0 {
|
|
t.Fatalf("preset should not be stored in messages: %#v", loaded.Messages)
|
|
}
|
|
}
|
|
|
|
func TestCreateKeepsEmptyPresetPrompt(t *testing.T) {
|
|
store := NewStore(t.TempDir())
|
|
conv, err := store.Create()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if conv.PresetPrompt != "" {
|
|
t.Fatalf("preset_prompt = %q", conv.PresetPrompt)
|
|
}
|
|
}
|
|
|
|
func TestSaveMessagesKeepsPresetPromptAndFiltersPresetMessages(t *testing.T) {
|
|
store := NewStore(t.TempDir())
|
|
conv, err := store.CreateWithPreset("你是测试助手")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
err = SaveMessages(store, conv.ID, []message.ChatMessage{
|
|
{Role: "system", Content: "你是测试助手", Hidden: true},
|
|
{Role: "user", Content: "你好"},
|
|
}, "你好,我在")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
loaded, err := store.Get(conv.ID)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if loaded.PresetPrompt != "你是测试助手" {
|
|
t.Fatalf("preset_prompt = %q", loaded.PresetPrompt)
|
|
}
|
|
if len(loaded.Messages) != 2 {
|
|
t.Fatalf("messages length = %d: %#v", len(loaded.Messages), loaded.Messages)
|
|
}
|
|
if loaded.Messages[0].Role != "user" || loaded.Messages[0].Content != "你好" {
|
|
t.Fatalf("unexpected first message: %#v", loaded.Messages[0])
|
|
}
|
|
if loaded.Messages[1].Role != "assistant" || loaded.Messages[1].Content != "你好,我在" {
|
|
t.Fatalf("unexpected assistant message: %#v", loaded.Messages[1])
|
|
}
|
|
}
|