1// SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
2//
3// SPDX-License-Identifier: AGPL-3.0-or-later
4
5package lunatask_test
6
7import (
8 "testing"
9 "time"
10
11 lunatask "git.secluded.site/go-lunatask"
12)
13
14const timelineNoteID = "6aa0d6e8-3b07-40a2-ae46-1bc272a0f472"
15
16func TestCreateTimelineNote_Success(t *testing.T) {
17 t.Parallel()
18
19 server, capture := newPOSTServer(t, "/person_timeline_notes", timelineNoteResponseBody)
20 defer server.Close()
21
22 client := lunatask.NewClient(testToken, lunatask.BaseURL(server.URL))
23
24 noteDate := lunatask.NewDate(time.Date(2021, 1, 10, 0, 0, 0, 0, time.UTC))
25
26 note, err := client.NewTimelineNote(personID).
27 OnDate(noteDate).
28 WithContent("Today we talked about ...").
29 Create(ctx())
30 if err != nil {
31 t.Fatalf("error = %v", err)
32 }
33
34 if note == nil {
35 t.Fatal("returned nil")
36 }
37
38 if note.ID != timelineNoteID {
39 t.Errorf("ID = %q, want %q", note.ID, timelineNoteID)
40 }
41
42 assertBodyField(t, capture.Body, "person_id", personID)
43 assertBodyField(t, capture.Body, "date_on", "2021-01-10")
44 assertBodyField(t, capture.Body, "content", "Today we talked about ...")
45}
46
47func TestCreateTimelineNote_MinimalFields(t *testing.T) {
48 t.Parallel()
49
50 server, capture := newPOSTServer(t, "/person_timeline_notes", timelineNoteResponseBody)
51 defer server.Close()
52
53 client := lunatask.NewClient(testToken, lunatask.BaseURL(server.URL))
54
55 // Per docs: date_on is optional (defaults to today), content is optional
56 _, err := client.NewTimelineNote(personID).
57 Create(ctx())
58 if err != nil {
59 t.Fatalf("error = %v", err)
60 }
61
62 assertBodyField(t, capture.Body, "person_id", personID)
63}
64
65func TestCreateTimelineNote_Errors(t *testing.T) {
66 t.Parallel()
67
68 testErrorCases(t, func(c *lunatask.Client) error {
69 _, err := c.NewTimelineNote(personID).Create(ctx())
70
71 return err //nolint:wrapcheck // test helper
72 })
73}
74
75const timelineNoteResponseBody = `{
76 "person_timeline_note": {
77 "id": "6aa0d6e8-3b07-40a2-ae46-1bc272a0f472",
78 "date_on": "2021-01-10",
79 "created_at": "2021-01-10T10:39:25Z",
80 "updated_at": "2021-01-10T10:39:25Z"
81 }
82}`