返回 DeepSeek-Reasonix
session_draft_content_test.go
根目录 / desktop / session_draft_content_test.go
1 package main
2
3 import "testing"
4
5 func TestDraftHasContentIgnoresClearedComposerState(t *testing.T) {
6 cleared := `{"text":" ","invocations":[],"attachments":[],"workspaceRefs":[],"pastedBlocks":[],"openPastedLabels":["kept ui state"],"sessionRefs":[],"selectedTextRefs":[]}`
7 for _, empty := range []string{"", "{}", " {} ", cleared} {
8 if draftHasContent(empty) {
9 t.Fatalf("draftHasContent(%q) = true, want false", empty)
10 }
11 }
12 for _, filled := range []string{
13 `{"text":"hello"}`,
14 `{"goalDraft":true}`,
15 `{"text":"","attachments":[{"path":"a.png"}]}`,
16 `{"text":"","workspaceRefs":[{"path":"src"}]}`,
17 `{"text":"","invocations":[{"name":"x"}]}`,
18 `{"text":"","pastedBlocks":[{"label":"p"}]}`,
19 `{"text":"","sessionRefs":[{"id":"s"}]}`,
20 `{"text":"","selectedTextRefs":[{"text":"t"}]}`,
21 `not json`,
22 } {
23 if !draftHasContent(filled) {
24 t.Fatalf("draftHasContent(%q) = false, want true", filled)
25 }
26 }
27 }
28
29 func TestListSessionDraftSummariesReportsContentFromFields(t *testing.T) {
30 isolateDesktopUserDirs(t)
31 a := newDraftTestApp(t)
32 draft, err := a.seedPreviousDraftForTarget("global", "")
33 if err != nil {
34 t.Fatal(err)
35 }
36 summaries, err := a.ListSessionDraftSummaries()
37 if err != nil || len(summaries) != 1 || summaries[0].HasContent {
38 t.Fatalf("fresh draft summaries = %+v, %v", summaries, err)
39 }
40 saved, err := a.SaveSessionDraft(SessionDraftSaveRequest{DraftID: draft.ID, Revision: draft.Revision,
41 ContentJSON: `{"text":"draft text","invocations":[],"attachments":[]}`, Settings: draft.Settings})
42 if err != nil || saved.Outcome != "saved" {
43 t.Fatalf("save = %+v, %v", saved, err)
44 }
45 summaries, err = a.ListSessionDraftSummaries()
46 if err != nil || len(summaries) != 1 || !summaries[0].HasContent {
47 t.Fatalf("filled draft summaries = %+v, %v", summaries, err)
48 }
49 cleared, err := a.SaveSessionDraft(SessionDraftSaveRequest{DraftID: draft.ID, Revision: saved.Draft.Revision,
50 ContentJSON: `{"text":"","invocations":[],"attachments":[],"workspaceRefs":[],"pastedBlocks":[],"openPastedLabels":[],"sessionRefs":[],"selectedTextRefs":[]}`,
51 Settings: draft.Settings})
52 if err != nil || cleared.Outcome != "saved" {
53 t.Fatalf("clear = %+v, %v", cleared, err)
54 }
55 summaries, err = a.ListSessionDraftSummaries()
56 if err != nil || len(summaries) != 1 || summaries[0].HasContent {
57 t.Fatalf("cleared draft summaries = %+v, %v", summaries, err)
58 }
59 }
60
60 lines GO