Skip to content

Commit

Permalink
Merge pull request #54 from kumackey/add_link
Browse files Browse the repository at this point in the history
メンションでなくリンク付きのユーザネームを表示するようにする
  • Loading branch information
kumackey authored May 1, 2024
2 parents a58cf93 + a0ef86a commit fdef958
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 30 deletions.
15 changes: 8 additions & 7 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@ import (
"context"
"flag"
"fmt"
"github.com/google/go-github/github"
"github.com/kumackey/kiriban/internal/domain"
"github.com/kumackey/kiriban/kiriban"
"golang.org/x/oauth2"
"log"
"os"
"strconv"
"strings"

"github.com/google/go-github/github"
"github.com/kumackey/kiriban/internal/domain"
"github.com/kumackey/kiriban/kiriban"
"golang.org/x/oauth2"
)

func main() {
Expand Down Expand Up @@ -115,16 +116,16 @@ func (g *githubClientImpl) CreateIssueComment(ctx context.Context, repository do
return issueComment.GetHTMLURL(), nil
}

func (g *githubClientImpl) GetIssueUsers(ctx context.Context, repository domain.Repository, numbers []int) (map[int]string, error) {
users := make(map[int]string, len(numbers))
func (g *githubClientImpl) GetIssueUsers(ctx context.Context, repository domain.Repository, numbers []int) (map[int]domain.User, error) {
users := make(map[int]domain.User, len(numbers))
for _, number := range numbers {
// TODO: N+1 problem
issue, _, err := g.client.Issues.Get(ctx, repository.Owner, repository.Repo, number)
if err != nil {
return nil, err
}

users[number] = issue.GetUser().GetLogin()
users[number] = domain.NewUser(issue.GetUser().GetLogin(), issue.GetUser().GetHTMLURL())
}

return users, nil
Expand Down
13 changes: 11 additions & 2 deletions internal/domain/issue_commenter.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,18 @@ type IssueCommenter struct {
kc *kiriban.Checker
}

type User struct {
login string
url string
}

func NewUser(login string, url string) User {
return User{login: login, url: url}
}

type GitHubClient interface {
CreateIssueComment(context.Context, Repository, int, string) (string, error)
GetIssueUsers(context.Context, Repository, []int) (map[int]string, error)
GetIssueUsers(context.Context, Repository, []int) (map[int]User, error)
}

func NewIssueCommenter(client GitHubClient, kc *kiriban.Checker) IssueCommenter {
Expand Down Expand Up @@ -65,7 +74,7 @@ func (ic IssueCommenter) Message(ctx context.Context, repository Repository, v i
}

for _, l := range list {
msg += fmt.Sprintf("| #%d | @%s |\n", l, users[l])
msg += fmt.Sprintf("| #%d | [%s](%s) |\n", l, users[l].login, users[l].url)
}

switch l {
Expand Down
52 changes: 33 additions & 19 deletions internal/domain/issue_commneter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,31 +17,31 @@ const (
| キリ番 | アカウント |
| --- | --- |
| #777 | @user1 |
| #789 | @user2 |
| #800 | @user3 |
| #876 | @user4 |
| #888 | @user5 |
| #900 | @user6 |
| #987 | @user7 |
| #999 | @user1 |
| #1000 | @user2 |
| #777 | [user1](https://example.com/user1) |
| #789 | [user2](https://example.com/user2) |
| #800 | [user3](https://example.com/user3) |
| #876 | [user4](https://example.com/user4) |
| #888 | [user5](https://example.com/user5) |
| #900 | [user6](https://example.com/user6) |
| #987 | [user7](https://example.com/user7) |
| #999 | [user1](https://example.com/user1) |
| #1000 | [user2](https://example.com/user2) |
| #1111 | まもなく…… |
`
expectedEn = `Congratulations!🎉 #1000 is kiriban!
Next kiriban is #1111. But fleeing after stepping on kiriban is strictly forbidden, you know!
| kiriban | account |
| --- | --- |
| #777 | @user1 |
| #789 | @user2 |
| #800 | @user3 |
| #876 | @user4 |
| #888 | @user5 |
| #900 | @user6 |
| #987 | @user7 |
| #999 | @user1 |
| #1000 | @user2 |
| #777 | [user1](https://example.com/user1) |
| #789 | [user2](https://example.com/user2) |
| #800 | [user3](https://example.com/user3) |
| #876 | [user4](https://example.com/user4) |
| #888 | [user5](https://example.com/user5) |
| #900 | [user6](https://example.com/user6) |
| #987 | [user7](https://example.com/user7) |
| #999 | [user1](https://example.com/user1) |
| #1000 | [user2](https://example.com/user2) |
| #1111 | Comming Soon... |
`
)
Expand All @@ -60,7 +60,21 @@ func TestIssueCommenter_Message(t *testing.T) {
repo, err := domain.NewRepository("kumackey/example")
assert.NoError(t, err)

users := map[int]string{777: "user1", 789: "user2", 800: "user3", 876: "user4", 888: "user5", 900: "user6", 987: "user7", 999: "user1", 1000: "user2"}
u := func(username string) domain.User {
return domain.NewUser(username, "https://example.com/"+username)
}

users := map[int]domain.User{
777: u("user1"),
789: u("user2"),
800: u("user3"),
876: u("user4"),
888: u("user5"),
900: u("user6"),
987: u("user7"),
999: u("user1"),
1000: u("user2"),
}
mockClient.EXPECT().GetIssueUsers(context.TODO(), repo, gomock.Any()).Return(users, nil).AnyTimes()

testCases := []struct {
Expand Down
4 changes: 2 additions & 2 deletions internal/domain/mock/issue_commenter.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit fdef958

Please sign in to comment.