From b55760aaa22674b0de3c148eafe13899de2b6041 Mon Sep 17 00:00:00 2001 From: mo khan Date: Sat, 18 May 2024 12:20:35 -0600 Subject: refactor: extract func to parse issues --- cmd/stanuki/main.go | 3 +-- pkg/gitlab/issue.go | 10 ++++++++++ pkg/gitlab/issue_test.go | 11 ++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/cmd/stanuki/main.go b/cmd/stanuki/main.go index 18284d4..3d0da86 100644 --- a/cmd/stanuki/main.go +++ b/cmd/stanuki/main.go @@ -7,7 +7,6 @@ import ( "net/http" "github.com/xlgmokha/x/pkg/env" - "github.com/xlgmokha/x/pkg/serde" "github.com/xlgmokha/x/pkg/x" "gitlab.com/mokhax/stanuki/pkg/gitlab" ) @@ -22,7 +21,7 @@ func main() { if env.Fetch("DUMP", "") != "" { fmt.Println(string(x.Must(io.ReadAll(response.Body)))) } else { - issues := x.Must(serde.From[[]gitlab.Issue](response.Body, serde.JSON)) + issues := x.Must(gitlab.FromIssues(response.Body)) for _, issue := range issues { fmt.Printf("%v: %v\n", issue.ID, issue.Title) } diff --git a/pkg/gitlab/issue.go b/pkg/gitlab/issue.go index 720a78b..959ade6 100644 --- a/pkg/gitlab/issue.go +++ b/pkg/gitlab/issue.go @@ -1,5 +1,11 @@ package gitlab +import ( + "io" + + "github.com/xlgmokha/x/pkg/serde" +) + type Issue struct { ID int `json:"id"` IID int `json:"iid"` @@ -7,3 +13,7 @@ type Issue struct { Title string `json:"title"` Description string `json:"description"` } + +func FromIssues(r io.Reader) ([]Issue, error) { + return serde.From[[]Issue](r, serde.JSON) +} diff --git a/pkg/gitlab/issue_test.go b/pkg/gitlab/issue_test.go index fd1feeb..029ba4a 100644 --- a/pkg/gitlab/issue_test.go +++ b/pkg/gitlab/issue_test.go @@ -1,15 +1,24 @@ package gitlab import ( + "strings" "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestIssue(t *testing.T) { t.Run("ParseIssues", func(t *testing.T) { t.Run("parses the array of issues from IO", func(t *testing.T) { - assert.Equal(t, false, true) + 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) }) }) } -- cgit v1.2.3