package ticket_test import ( "testing" "task/internal/ticket" ) func TestBoardListMatches(t *testing.T) { cases := []struct { list ticket.BoardList status ticket.Status want bool }{ {ticket.BoardAll, ticket.StatusTodo, true}, {ticket.BoardAll, ticket.StatusDone, true}, {ticket.BoardBacklog, ticket.StatusTodo, true}, {ticket.BoardBacklog, ticket.StatusInProgress, false}, {ticket.BoardInProgress, ticket.StatusInProgress, true}, {ticket.BoardDone, ticket.StatusDone, true}, {ticket.BoardDone, ticket.StatusTodo, false}, } for _, tc := range cases { if got := tc.list.Matches(tc.status); got != tc.want { t.Errorf("%s.Matches(%s) = %v, want %v", tc.list, tc.status, got, tc.want) } } } func TestBoardListDefaultStatus(t *testing.T) { if ticket.BoardBacklog.DefaultStatus() != ticket.StatusTodo { t.Fatal("backlog default") } if ticket.BoardInProgress.DefaultStatus() != ticket.StatusInProgress { t.Fatal("in progress default") } if ticket.BoardDone.DefaultStatus() != ticket.StatusDone { t.Fatal("done default") } if ticket.BoardAll.DefaultStatus() != ticket.StatusTodo { t.Fatal("all default") } } func TestBoardFilterMultiSelect(t *testing.T) { f := ticket.ParseBoardLists("backlog,done") if !f.Matches(ticket.StatusTodo) || !f.Matches(ticket.StatusDone) { t.Fatalf("expected backlog+done match, got %v", f) } if f.Matches(ticket.StatusInProgress) { t.Fatal("should not match in progress") } if got := ticket.FormatBoardLists(f); got != "backlog,done" { t.Fatalf("format = %q", got) } } func TestBoardFilterAllDominatesNormalize(t *testing.T) { f := ticket.NormalizeFilter(ticket.BoardFilter{ticket.BoardAll, ticket.BoardBacklog}) if len(f) != 1 || f[0] != ticket.BoardBacklog { t.Fatalf("got %v", f) } } func TestBoardListShortcut(t *testing.T) { if ticket.BoardAll.Shortcut() != 'a' { t.Fatal("all") } if ticket.BoardBacklog.Shortcut() != 'b' { t.Fatal("backlog") } if ticket.BoardInProgress.Shortcut() != 'i' { t.Fatal("in progress") } if ticket.BoardDone.Shortcut() != 'd' { t.Fatal("done") } }