diff options
Diffstat (limited to 'internal/store/availability_test.go')
| -rw-r--r-- | internal/store/availability_test.go | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/internal/store/availability_test.go b/internal/store/availability_test.go index 97ce90e..ef3500c 100644 --- a/internal/store/availability_test.go +++ b/internal/store/availability_test.go @@ -2,6 +2,7 @@ package store import ( "database/sql" + "errors" "path/filepath" "testing" @@ -31,3 +32,70 @@ func newAvailabilityTestStore(t *testing.T) *Store { } return &Store{db: db} } + +func TestCreateAvailabilityBlock_ReturnsCreatedBlock(t *testing.T) { + s := newAvailabilityTestStore(t) + + block, err := s.CreateAvailabilityBlock(1, "18:00", "20:00", "evening focus") + if err != nil { + t.Fatalf("CreateAvailabilityBlock: %v", err) + } + if block.ID == "" { + t.Error("expected a generated ID") + } + if block.Weekday != 1 || block.StartTime != "18:00" || block.EndTime != "20:00" || block.Label != "evening focus" { + t.Errorf("block = %+v, unexpected field values", block) + } +} + +func TestGetAvailabilityBlocks_ReturnsAllOrderedByWeekday(t *testing.T) { + s := newAvailabilityTestStore(t) + + if _, err := s.CreateAvailabilityBlock(3, "09:00", "10:00", ""); err != nil { + t.Fatal(err) + } + if _, err := s.CreateAvailabilityBlock(1, "18:00", "20:00", ""); err != nil { + t.Fatal(err) + } + + blocks, err := s.GetAvailabilityBlocks() + if err != nil { + t.Fatalf("GetAvailabilityBlocks: %v", err) + } + if len(blocks) != 2 { + t.Fatalf("len(blocks) = %d, want 2", len(blocks)) + } + if blocks[0].Weekday != 1 || blocks[1].Weekday != 3 { + t.Errorf("expected weekday-ascending order, got %d then %d", blocks[0].Weekday, blocks[1].Weekday) + } +} + +func TestDeleteAvailabilityBlock_RemovesIt(t *testing.T) { + s := newAvailabilityTestStore(t) + + block, err := s.CreateAvailabilityBlock(2, "07:00", "08:00", "") + if err != nil { + t.Fatal(err) + } + + if err := s.DeleteAvailabilityBlock(block.ID); err != nil { + t.Fatalf("DeleteAvailabilityBlock: %v", err) + } + + blocks, err := s.GetAvailabilityBlocks() + if err != nil { + t.Fatal(err) + } + if len(blocks) != 0 { + t.Errorf("expected no blocks after delete, got %d", len(blocks)) + } +} + +func TestDeleteAvailabilityBlock_UnknownID_ReturnsErrNotFound(t *testing.T) { + s := newAvailabilityTestStore(t) + + err := s.DeleteAvailabilityBlock("does-not-exist") + if !errors.Is(err, ErrNativeTaskNotFound) { + t.Errorf("err = %v, want ErrNativeTaskNotFound", err) + } +} |
