1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
package gitlab
import (
"bufio"
"os"
"strings"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/xlgmokha/x/pkg/x"
)
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 := 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 := 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, IssueStateClosed, 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, UserStateActive, 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)
})
})
}
|