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
10 lunatask "git.secluded.site/go-lunatask"
11)
12
13func TestParseTaskStatus(t *testing.T) {
14 t.Parallel()
15
16 tests := []struct {
17 name string
18 input string
19 want lunatask.TaskStatus
20 wantErr bool
21 }{
22 {"later_lower", "later", lunatask.StatusLater, false},
23 {"later_upper", "LATER", lunatask.StatusLater, false},
24 {"later_mixed", "LaTeR", lunatask.StatusLater, false},
25 {"next_lower", "next", lunatask.StatusNext, false},
26 {"next_upper", "NEXT", lunatask.StatusNext, false},
27 {"started_lower", "started", lunatask.StatusInProgress, false},
28 {"started_upper", "STARTED", lunatask.StatusInProgress, false},
29 {"in_progress_lower", "in-progress", lunatask.StatusInProgress, false},
30 {"in_progress_upper", "IN-PROGRESS", lunatask.StatusInProgress, false},
31 {"waiting_lower", "waiting", lunatask.StatusWaiting, false},
32 {"waiting_upper", "WAITING", lunatask.StatusWaiting, false},
33 {"completed_lower", "completed", lunatask.StatusCompleted, false},
34 {"completed_upper", "COMPLETED", lunatask.StatusCompleted, false},
35 {"completed_mixed", "CoMpLeTeD", lunatask.StatusCompleted, false},
36 {"invalid", "invalid", "", true},
37 {"empty", "", "", true},
38 {"numeric", "1", "", true},
39 {"typo", "completd", "", true},
40 }
41
42 for _, testCase := range tests {
43 t.Run(testCase.name, func(t *testing.T) {
44 t.Parallel()
45
46 got, err := lunatask.ParseTaskStatus(testCase.input)
47 if (err != nil) != testCase.wantErr {
48 t.Errorf("ParseTaskStatus(%q) error = %v, wantErr %v", testCase.input, err, testCase.wantErr)
49
50 return
51 }
52
53 if !testCase.wantErr && got != testCase.want {
54 t.Errorf("ParseTaskStatus(%q) = %q, want %q", testCase.input, got, testCase.want)
55 }
56 })
57 }
58}