habits_test.go

 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}