summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2024-06-19 11:04:03 -0600
committermo khan <mo@mokhan.ca>2024-06-19 11:04:03 -0600
commit77bddf64c1991acf97c7c8896203bc9872012918 (patch)
tree44c80a5deccf9dbe412a6b0813b0aa86bdf1ebc4 /test
parentee8260d57d8194288c52056ee27b0d0a7c111bdd (diff)
Rename Paramable to Entity
Diffstat (limited to 'test')
-rw-r--r--test/gitlab/issue_test.go103
1 files changed, 103 insertions, 0 deletions
diff --git a/test/gitlab/issue_test.go b/test/gitlab/issue_test.go
new file mode 100644
index 0000000..fe01aef
--- /dev/null
+++ b/test/gitlab/issue_test.go
@@ -0,0 +1,103 @@
+package gitlab
+
+import (
+ "bufio"
+ "os"
+ "strings"
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+ "github.com/xlgmokha/x/pkg/x"
+ "gitlab.com/mokhax/stanuki/pkg/gitlab"
+)
+
+func TestIssue(t *testing.T) {
+ t.Run("FromIssues", func(t *testing.T) {
+ t.Run("parses the array of issues from IO", func(t *testing.T) {
+ body := strings.NewReader(`[{"ID":1,"title":"Issue Title"}]`)
+
+ results, err := gitlab.FromIssues(body)
+
+ require.NoError(t, err)
+ require.Equal(t, 1, len(results))
+ assert.Equal(t, 1, results[0].ID)
+ assert.Equal(t, "Issue Title", results[0].Title)
+ })
+ })
+
+ t.Run("From", func(t *testing.T) {
+ t.Run("parses each field", func(t *testing.T) {
+ file, err := os.Open("../../test/data/issues.json")
+ require.NoError(t, err)
+
+ reader := bufio.NewReader(file)
+ results, err := gitlab.FromIssues(reader)
+ require.NoError(t, err)
+
+ assert.Len(t, results, 20)
+
+ result := results[0]
+
+ assert.Equal(t, 146760799, result.ID)
+ assert.Equal(t, 6375, result.IID)
+ assert.Equal(t, 40549124, result.ProjectID)
+ assert.Contains(t, result.Title, "`gitlab-org/gitlab` broken `master` with rspec unit")
+ assert.Contains(t, result.Description, "## How to close this incident\n\n- Follow the steps in the")
+ assert.Equal(t, gitlab.IssueClosed, result.State)
+ assert.Equal(t, x.Must(time.Parse(time.RFC3339Nano, "2024-05-18T17:39:14.548Z")), result.CreatedAt)
+ assert.Equal(t, x.Must(time.Parse(time.RFC3339Nano, "2024-05-18T18:14:37.830Z")), result.UpdatedAt)
+ assert.Equal(t, x.Must(time.Parse(time.RFC3339Nano, "2024-05-18T17:39:16.837Z")), result.ClosedAt)
+
+ t.Run("closed_by", func(t *testing.T) {
+ user := result.ClosedBy
+ assert.Equal(t, 1786152, user.ID)
+ assert.Equal(t, "gitlab-bot", user.Username)
+ assert.Equal(t, gitlab.UserActive, user.State)
+ assert.Equal(t, false, user.Locked)
+ assert.Equal(t, "https://gitlab.com/uploads/-/system/user/avatar/1786152/avatar.png", user.AvatarUrl)
+ assert.Equal(t, "https://gitlab.com/gitlab-bot", user.WebUrl)
+ })
+
+ assert.ElementsMatch(t, []string{
+ "Engineering Productivity",
+ "master-broken::job-timeout",
+ "master:broken",
+ }, result.Labels)
+
+ assert.Nil(t, result.Milestone)
+ assert.Empty(t, result.Assignees)
+
+ assert.Equal(t, 1786152, result.Author.ID)
+ assert.Equal(t, gitlab.IssueTypeIncident, result.Type)
+ assert.Nil(t, result.Assignee)
+ assert.Equal(t, 4, result.UserNotesCount)
+ assert.Equal(t, 0, result.MergeRequestsCount)
+ assert.Equal(t, 0, result.Upvotes)
+ assert.Equal(t, 0, result.Downvotes)
+ assert.Nil(t, result.DueDate)
+ assert.False(t, result.Confidential)
+ assert.Nil(t, result.DiscussionLocked)
+ assert.Equal(t, "https://gitlab.com/gitlab-org/quality/engineering-productivity/master-broken-incidents/-/issues/6375", result.WebUrl)
+
+ // t.Run("time_stats", func(t *testing.T) {
+ // stats := result.TimeStatistics
+ // assert.Equal(t, 0, stats.TimeEstimate)
+ // assert.Equal(t, 0, stats.TotalTimeSpent)
+ // assert.Nil(t, stats.HumanTimeEstimate)
+ // assert.Nil(t, stats.HumanTimeSpent)
+ // })
+
+ // t.Run("task_completion_status", func(t *testing.T) {
+ // status := result.TaskCompletionStatus
+ // assert.Equal(t, 0, status.Count)
+ // assert.Equal(t, 0, status.CompletedCount)
+ // })
+
+ assert.Equal(t, 0, result.BlockingIssuesCount)
+ assert.True(t, result.HasTasks)
+ assert.Equal(t, "0 of 0 checklist items completed", result.TaskStatus)
+ })
+ })
+}