diff options
Diffstat (limited to 'internal/store/projects_test.go')
| -rw-r--r-- | internal/store/projects_test.go | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/internal/store/projects_test.go b/internal/store/projects_test.go index beb1aa9..b39384a 100644 --- a/internal/store/projects_test.go +++ b/internal/store/projects_test.go @@ -84,3 +84,65 @@ func TestSetTaskProject_UnknownID_ReturnsErrNotFound(t *testing.T) { t.Fatalf("expected ErrNativeTaskNotFound, got %v", err) } } + +func TestSetProjectBudgetTracked_TogglesFlag(t *testing.T) { + s := newNativeTasksTestStore(t) + project, err := s.CreateProject("Sailing prep", "#3B82F6") + if err != nil { + t.Fatal(err) + } + + if err := s.SetProjectBudgetTracked(project.ID, true); err != nil { + t.Fatalf("SetProjectBudgetTracked: %v", err) + } + got, err := s.GetProjectByID(project.ID) + if err != nil { + t.Fatal(err) + } + if !got.BudgetTracked { + t.Error("expected BudgetTracked = true") + } + + if err := s.SetProjectBudgetTracked(project.ID, false); err != nil { + t.Fatal(err) + } + got, err = s.GetProjectByID(project.ID) + if err != nil { + t.Fatal(err) + } + if got.BudgetTracked { + t.Error("expected BudgetTracked = false after untoggling") + } +} + +func TestSetProjectBudgetTracked_UnknownID_ReturnsErrNotFound(t *testing.T) { + s := newNativeTasksTestStore(t) + if err := s.SetProjectBudgetTracked("does-not-exist", true); !errors.Is(err, ErrNativeTaskNotFound) { + t.Errorf("err = %v, want ErrNativeTaskNotFound", err) + } +} + +func TestGetBudgetTrackedProjectIDs_ReturnsOnlyTracked(t *testing.T) { + s := newNativeTasksTestStore(t) + tracked, err := s.CreateProject("Tracked", "#111111") + if err != nil { + t.Fatal(err) + } + if _, err := s.CreateProject("Untracked", "#222222"); err != nil { + t.Fatal(err) + } + if err := s.SetProjectBudgetTracked(tracked.ID, true); err != nil { + t.Fatal(err) + } + + ids, err := s.GetBudgetTrackedProjectIDs() + if err != nil { + t.Fatalf("GetBudgetTrackedProjectIDs: %v", err) + } + if !ids[tracked.ID] { + t.Error("expected tracked project id present") + } + if len(ids) != 1 { + t.Errorf("len(ids) = %d, want 1", len(ids)) + } +} |
