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 habitID = "25b8ad7e-a89b-4f05-8173-83fcd2e21ae2"
15
16func TestTrackHabitActivity_Success(t *testing.T) {
17 t.Parallel()
18
19 server, capture := newPOSTServer(t, "/habits/"+habitID+"/track", `{"status": "ok"}`)
20 defer server.Close()
21
22 client := lunatask.NewClient(testToken, lunatask.BaseURL(server.URL))
23
24 performedOn := lunatask.NewDate(time.Date(2024, 8, 26, 0, 0, 0, 0, time.UTC))
25 req := &lunatask.TrackHabitActivityRequest{PerformedOn: performedOn}
26
27 resp, err := client.TrackHabitActivity(ctx(), habitID, req)
28 if err != nil {
29 t.Fatalf("error = %v", err)
30 }
31
32 if resp == nil {
33 t.Fatal("returned nil")
34 }
35
36 if resp.Status != "ok" {
37 t.Errorf("Status = %q, want %q", resp.Status, "ok")
38 }
39
40 assertBodyField(t, capture.Body, "performed_on", "2024-08-26")
41}
42
43func TestTrackHabitActivity_Errors(t *testing.T) {
44 t.Parallel()
45
46 testErrorCases(t, func(c *lunatask.Client) error {
47 performedOn := lunatask.NewDate(time.Date(2024, 8, 26, 0, 0, 0, 0, time.UTC))
48 req := &lunatask.TrackHabitActivityRequest{PerformedOn: performedOn}
49 _, err := c.TrackHabitActivity(ctx(), habitID, req)
50
51 return err //nolint:wrapcheck // test helper
52 })
53}