返回 DeepSeek-Reasonix
rename_topic_catalog_test.go
根目录 / desktop / rename_topic_catalog_test.go
1 package main
2
3 import (
4 "os"
5 "path/filepath"
6 "testing"
7 "time"
8
9 "reasonix/internal/agent"
10 )
11
12 func TestRenameTopicCatalogOnlyProjectTopic(t *testing.T) {
13 isolateDesktopUserDirs(t)
14 root := robustTempDir(t)
15 if err := addProject(root, "Catalog Only Project"); err != nil {
16 t.Fatalf("add project: %v", err)
17 }
18 dir := desktopSessionDir(root)
19 if err := os.MkdirAll(dir, 0o755); err != nil {
20 t.Fatalf("mkdir sessions: %v", err)
21 }
22 topicID := "topic_catalog_only"
23 // The session exists in the project session dir with branch metadata, but
24 // no topic title index entry and no open tab: the catalog is the only
25 // place that knows the topic.
26 writeTopicSessionWithPrompt(t, dir, "catalog-only.jsonl", topicID, "旧标题", root, "catalog only prompt", time.Now())
27
28 app := NewApp()
29 installSessionCatalogForTest(t, app, dir, "project", root)
30
31 if err := app.RenameTopic(topicID, "新标题"); err != nil {
32 t.Fatalf("rename catalog-only topic: %v", err)
33 }
34 if got := loadTopicTitle(root, topicID); got != "新标题" {
35 t.Fatalf("catalog-only topic title = %q, want 新标题", got)
36 }
37 if meta, ok, err := agent.LoadBranchMeta(filepath.Join(dir, "catalog-only.jsonl")); err != nil || !ok || meta.TopicTitle != "新标题" {
38 t.Fatalf("branch meta title = %q ok=%v err=%v, want 新标题", meta.TopicTitle, ok, err)
39 }
40 }
41
42 func TestRenameTopicUnknownTopicStillFails(t *testing.T) {
43 isolateDesktopUserDirs(t)
44 app := NewApp()
45 if err := app.RenameTopic("topic_does_not_exist", "标题"); err == nil {
46 t.Fatal("rename of an unknown topic should fail")
47 }
48 }
49
49 lines GO