Skip to content

Commit

Permalink
impl
Browse files Browse the repository at this point in the history
  • Loading branch information
raahii committed May 5, 2024
1 parent 94f5687 commit 4d8f5cb
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 54 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ prepare:
&& go install github.com/gotesttools/gotestfmt/v2/cmd/gotestfmt@latest \
&& go install github.com/google/wire/cmd/wire@latest

generate:
generate: clean
cd pkg \
&& GOFLAGS=-mod=mod go generate ./...

Expand Down
21 changes: 15 additions & 6 deletions pkg/messaging/handler/bot_message.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,10 +129,12 @@ func (bh *BotHandlerImpl) handleTextMessage(event *linebot.Event, message *lineb
if group.Status == store.GROUP_CREATED {
// This group is under setting up as it doesn't have sufficient members.
// Handle messages to join to group only.
if strings.HasSuffix(message.Text, JOIN_MESSAGE_SUFFIX) {
if err := bh.addNewMember(event, group, message.Text); err != nil {
memberName := bh.extractMemberName(message.Text)
if memberName != "" {
if err := bh.addNewMember(event, group, memberName); err != nil {
return err
}

return nil
}

Expand Down Expand Up @@ -232,13 +234,20 @@ func (bh *BotHandlerImpl) handleTextMessage(event *linebot.Event, message *lineb
return nil
}

func (bh *BotHandlerImpl) addNewMember(event *linebot.Event, group *store.Group, text string) error {
func (bh *BotHandlerImpl) extractMemberName(text string) string {
trimmed := strings.Split(text, "\n")[0]
trimmed = strings.TrimRight(trimmed, "ー〜!!")
if !strings.HasSuffix(trimmed, JOIN_MESSAGE_SUFFIX) {
return ""
}

return strings.TrimSuffix(trimmed, JOIN_MESSAGE_SUFFIX)
}

func (bh *BotHandlerImpl) addNewMember(event *linebot.Event, group *store.Group, memberName string) error {
// FIXME: Need to consider multiple users are added to the group simultaneously.
// FIXME: Need to consider nickname (user) validation.

memberName := strings.TrimSuffix(text, JOIN_MESSAGE_SUFFIX)
memberName = strings.Trim(memberName, " \n")

senderID := event.Source.UserID
group.Members[senderID] = store.NewUser(senderID, memberName, 0)

Expand Down
21 changes: 17 additions & 4 deletions pkg/messaging/handler/bot_message_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ import (
"testing"
"time"

"go.uber.org/mock/gomock"
"github.com/line/line-bot-sdk-go/v7/linebot"
"github.com/raahii/haraiai/pkg/store"
"github.com/raahii/haraiai/pkg/timeutil"
"github.com/stretchr/testify/assert"
"go.uber.org/mock/gomock"
)

func TestHandleTextMessage_addNewMember_firstPerson_success(t *testing.T) {
Expand All @@ -25,6 +25,12 @@ func TestHandleTextMessage_addNewMember_firstPerson_success(t *testing.T) {
[]*store.User{},
)

s.
EXPECT().
GetGroup(group.ID).
Return(group, nil).
Times(1)

// Expect to reply text message.
expectedMessage := "太郎さんだね!👍"
b.
Expand Down Expand Up @@ -56,7 +62,8 @@ func TestHandleTextMessage_addNewMember_firstPerson_success(t *testing.T) {

// Test handler.handleTextMessage call.
event := newTestMessageEvent(REPLY_TOKEN, linebot.EventSourceTypeGroup, GROUP_ID, SENDER_ID)
err := target.addNewMember(event, group, "太郎だよ")
message := newTextMessage("太郎だよ")
err := target.handleTextMessage(event, message)

assert.Nil(t, err)
}
Expand All @@ -72,6 +79,11 @@ func TestHandleTextMessage_addNewMember_secondPerson_success(t *testing.T) {
store.GROUP_CREATED,
[]*store.User{newTaroUser(0)},
)
s.
EXPECT().
GetGroup(group.ID).
Return(group, nil).
Times(1)

// Expect to reply text message.
expectedMessage := "花子さんだね!👍"
Expand Down Expand Up @@ -104,9 +116,10 @@ func TestHandleTextMessage_addNewMember_secondPerson_success(t *testing.T) {
assert.Equal(t, int64(0), newUser.InitialPayAmount)
})

// Test handler.handleTextMessage call.
// Test handler.handleTextMessage call.
event := newTestMessageEvent(REPLY_TOKEN, linebot.EventSourceTypeGroup, GROUP_ID, SENDER_ID)
err := target.addNewMember(event, group, "花子だよ")
message := newTextMessage("花子だよ〜!")
err := target.handleTextMessage(event, message)

assert.Nil(t, err)
}
Expand Down
43 changes: 0 additions & 43 deletions pkg/wire/wire_gen.go

This file was deleted.

0 comments on commit 4d8f5cb

Please sign in to comment.