返回 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 `{"text":"","attachments":[{"path":"a.png"}]}`,
15 `{"text":"","workspaceRefs":[{"path":"src"}]}`,
16 `{"text":"","invocations":[{"name":"x"}]}`,
17 `{"text":"","pastedBlocks":[{"label":"p"}]}`,
18 `{"text":"","sessionRefs":[{"id":"s"}]}`,
19 `{"text":"","selectedTextRefs":[{"text":"t"}]}`,
20 `not json`,
21 } {
22 if !draftHasContent(filled) {
23 t.Fatalf("draftHasContent(%q) = false, want true", filled)
24 }
25 }
26 }
27
28 func TestListSessionDraftSummariesReportsContentFromFields(t *testing.T) {
29 isolateDesktopUserDirs(t)
30 a := newDraftTestApp(t)
31 draft, err := a.OpenSessionDraftForTarget("global", "")
32 if err != nil {
33 t.Fatal(err)
34 }
35 summaries, err := a.ListSessionDraftSummaries()
36 if err != nil || len(summaries) != 1 || summaries[0].HasContent {
37 t.Fatalf("fresh draft summaries = %+v, %v", summaries, err)
38 }
39 saved, err := a.SaveSessionDraft(SessionDraftSaveRequest{DraftID: draft.ID, Revision: draft.Revision,
40 ContentJSON: `{"text":"draft text","invocations":[],"attachments":[]}`, Settings: draft.Settings})
41 if err != nil || saved.Outcome != "saved" {
42 t.Fatalf("save = %+v, %v", saved, err)
43 }
44 summaries, err = a.ListSessionDraftSummaries()
45 if err != nil || len(summaries) != 1 || !summaries[0].HasContent {
46 t.Fatalf("filled draft summaries = %+v, %v", summaries, err)
47 }
48 cleared, err := a.SaveSessionDraft(SessionDraftSaveRequest{DraftID: draft.ID, Revision: saved.Draft.Revision,
49 ContentJSON: `{"text":"","invocations":[],"attachments":[],"workspaceRefs":[],"pastedBlocks":[],"openPastedLabels":[],"sessionRefs":[],"selectedTextRefs":[]}`,
50 Settings: draft.Settings})
51 if err != nil || cleared.Outcome != "saved" {
52 t.Fatalf("clear = %+v, %v", cleared, err)
53 }
54 summaries, err = a.ListSessionDraftSummaries()
55 if err != nil || len(summaries) != 1 || summaries[0].HasContent {
56 t.Fatalf("cleared draft summaries = %+v, %v", summaries, err)
57 }
58 }
59
59 lines GO