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]) } }