| 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 |