Skip to content

Commit

Permalink
[Dembo] Refactor move formatting to message object
Browse files Browse the repository at this point in the history
  • Loading branch information
walbertus committed Sep 18, 2019
1 parent 5a68f3e commit e4e9dc2
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ func TestSlackClientIntegration_Publish(t *testing.T) {
ctx.setUp(t)
defer ctx.tearDown()

messageObject := message.NewStandardMessage("Message from slack plugin integration test with standard message")
err := ctx.instance().slackClient.Publish(messageObject)
messageObject := message.MessageMock{}
messageObject.On("JSON").Return("{\"text\":\"Message from slack plugin integration test with standard message\"}", nil)
err := ctx.instance().slackClient.Publish(&messageObject)
assert.NoError(t, err)
}
18 changes: 15 additions & 3 deletions plugins/slack-notification-plugin/slack/message/standard.go
Original file line number Diff line number Diff line change
@@ -1,21 +1,33 @@
package message

import "encoding/json"
import (
"encoding/json"
"proctor/pkg/notification/event"
)

type standardMessage struct {
Text string `json:"text"`
evt event.Event
}

func (messageObject *standardMessage) JSON() (string, error) {
evtDataJSON, err := json.Marshal(messageObject.evt.Content())
if err != nil {
return "", err
}
textMessage := "User: " + messageObject.evt.User().Email + "\n"
textMessage += "Execute job with detail: "
textMessage += string(evtDataJSON)
messageObject.Text = textMessage
byteMessage, err := json.Marshal(messageObject)
if err != nil {
return "", err
}
return string(byteMessage), nil
}

func NewStandardMessage(text string) Message {
func NewStandardMessage(evt event.Event) Message {
return &standardMessage{
Text: text,
evt: evt,
}
}
20 changes: 18 additions & 2 deletions plugins/slack-notification-plugin/slack/message/standard_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,28 @@ package message

import (
"github.com/stretchr/testify/assert"
"proctor/pkg/notification/event"
"testing"
)

func TestStandardMessage_JSON(t *testing.T) {
messageObject := NewStandardMessage("content")
userData := event.UserData{
Email: "[email protected]",
}
content := map[string]string{
"ExecutionID": "7",
"JobName": "test-job",
"ImageTag": "test",
"Args": "args",
"Status": "CREATED",
}
evt := event.EventMock{}
evt.On("User").Return(userData)
evt.On("Content").Return(content)
defer evt.AssertExpectations(t)

messageObject := NewStandardMessage(&evt)
result, err := messageObject.JSON()
assert.NoError(t, err)
assert.Equal(t, "{\"text\":\"content\"}", result)
assert.NotEmpty(t, result)
}
12 changes: 2 additions & 10 deletions plugins/slack-notification-plugin/slack_notification.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package main

import (
"encoding/json"
"github.com/go-resty/resty/v2"
"proctor/pkg/notification"
"proctor/pkg/notification/event"
Expand All @@ -14,15 +13,8 @@ type slackNotification struct {
}

func (notification *slackNotification) OnNotify(evt event.Event) error {
evtDataJSON, err := json.Marshal(evt.Content())
if err != nil {
return err
}
textMessage := "User: " + evt.User().Email + "\n"
textMessage += "Execute job with detail: "
textMessage += string(evtDataJSON)
messageObject := message.NewStandardMessage(textMessage)
err = notification.slackClient.Publish(messageObject)
messageObject := message.NewStandardMessage(evt)
err := notification.slackClient.Publish(messageObject)
return err
}

Expand Down
4 changes: 2 additions & 2 deletions plugins/slack-notification-plugin/slack_notification_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ func TestSlackNotification_OnNotify(t *testing.T) {
evt.On("User").Return(userData)
evt.On("Content").Return(content)

messageObject := message.NewStandardMessage("User: [email protected]\nExecute job with detail: {\"Args\":\"args\",\"ExecutionID\":\"7\",\"ImageTag\":\"test\",\"JobName\":\"test-job\",\"Status\":\"CREATED\"}")
messageObject := message.NewStandardMessage(evt)
ctx.instance().slackClient.On("Publish", messageObject).Return(nil)

err := ctx.instance().slackNotification.OnNotify(evt)
Expand Down Expand Up @@ -90,7 +90,7 @@ func TestSlackNotification_OnNotifyErrorPublish(t *testing.T) {
evt.On("User").Return(userData)
evt.On("Content").Return(content)

messageObject := message.NewStandardMessage("User: [email protected]\nExecute job with detail: {\"Args\":\"args\",\"ExecutionID\":\"7\",\"ImageTag\":\"test\",\"JobName\":\"test-job\",\"Status\":\"CREATED\"}")
messageObject := message.NewStandardMessage(evt)
ctx.instance().slackClient.On("Publish", messageObject).Return(errors.New("publish error"))

err := ctx.instance().slackNotification.OnNotify(evt)
Expand Down

0 comments on commit e4e9dc2

Please sign in to comment.