diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/gitlab/issue_test.go | 103 |
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) + }) + }) +} |
