TP-56017 : Slack Service UT - Messaging Operations (#362)
This commit is contained in:
216
service/slack/slack_service_test.go
Normal file
216
service/slack/slack_service_test.go
Normal file
@@ -0,0 +1,216 @@
|
||||
package slack
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/slack-go/slack"
|
||||
"github.com/stretchr/testify/suite"
|
||||
"houston/logger"
|
||||
"houston/mocks"
|
||||
"testing"
|
||||
)
|
||||
|
||||
type SlackServiceSuite struct {
|
||||
suite.Suite
|
||||
SlackService *SlackService
|
||||
SocketModeClientWrapper mocks.ISocketModeClientWrapperMock
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_SendDM_FailureCase() {
|
||||
suite.SocketModeClientWrapper.PostMessageMock.Return("", "", GetMockSlackError())
|
||||
|
||||
err := suite.SlackService.SendDM(GetMockRecipientID(), GetMockMessageText())
|
||||
suite.Error(err, "service must throw error")
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_SendDM_SuccessCase() {
|
||||
suite.SocketModeClientWrapper.PostMessageMock.Return(GetMockChannelID(), GetMockTimeStamp(), nil)
|
||||
|
||||
err := suite.SlackService.SendDM(GetMockRecipientID(), GetMockMessageText())
|
||||
suite.NoError(err, "service must not throw error")
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_PostMessage_FailureCase() {
|
||||
suite.SocketModeClientWrapper.PostMessageMock.Return("", "", GetMockSlackError())
|
||||
|
||||
timeStamp, err := suite.SlackService.PostMessage(GetMockMessageText(), false, GetMockChannel())
|
||||
suite.Error(err, "service must throw error")
|
||||
suite.Empty(timeStamp, "timeStamp must be empty")
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_PostMessage_SuccessCase() {
|
||||
suite.SocketModeClientWrapper.PostMessageMock.Return(GetMockChannelID(), GetMockTimeStamp(), nil)
|
||||
|
||||
timeStamp, err := suite.SlackService.PostMessage(GetMockMessageText(), false, GetMockChannel())
|
||||
suite.NoError(err, "service must not throw error")
|
||||
suite.NotEmpty(timeStamp, "timeStamp must not be empty")
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_PostMessageOption_FailureCase() {
|
||||
suite.SocketModeClientWrapper.PostMessageMock.Return("", "", GetMockSlackError())
|
||||
|
||||
timeStamp, err := suite.SlackService.PostMessageOption(GetMockChannelID(), GetMockMessageOption())
|
||||
suite.Error(err, "service must throw error")
|
||||
suite.Empty(timeStamp, "timeStamp must be empty")
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_PostMessageOption_SuccessCase() {
|
||||
suite.SocketModeClientWrapper.PostMessageMock.Return(GetMockChannelID(), GetMockTimeStamp(), nil)
|
||||
|
||||
timeStamp, err := suite.SlackService.PostMessageOption(GetMockChannelID(), GetMockMessageOption())
|
||||
suite.NoError(err, "service must not throw error")
|
||||
suite.NotEmpty(timeStamp, "timeStamp must not be empty")
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_UploadFileByPath_FailureCase() {
|
||||
suite.SocketModeClientWrapper.UploadFileMock.Return(nil, GetMockSlackError())
|
||||
|
||||
file, err := suite.SlackService.UploadFileByPath(GetMockFilePath(), GetMockChannelID())
|
||||
suite.Error(err, "service must throw error")
|
||||
suite.Nil(file, "file must be nil")
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_UploadFileByPath_SuccessCase() {
|
||||
suite.SocketModeClientWrapper.UploadFileMock.Return(&slack.File{}, nil)
|
||||
|
||||
file, err := suite.SlackService.UploadFileByPath(GetMockFilePath(), GetMockChannelID())
|
||||
suite.NoError(err, "service must not throw error")
|
||||
suite.NotNil(file, "file must not be nil")
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_PostMessageByChannelID_FailureCase() {
|
||||
suite.SocketModeClientWrapper.PostMessageMock.Return("", "", GetMockSlackError())
|
||||
|
||||
timeStamp, err := suite.SlackService.PostMessageByChannelID(GetMockMessageText(), false, GetMockChannelID())
|
||||
suite.Error(err, "service must throw error")
|
||||
suite.Empty(timeStamp, "timeStamp must be empty")
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_PostMessageByChannelID_SuccessCase() {
|
||||
suite.SocketModeClientWrapper.PostMessageMock.Return(GetMockChannelID(), GetMockTimeStamp(), nil)
|
||||
|
||||
timeStamp, err := suite.SlackService.PostMessageByChannelID(GetMockMessageText(), false, GetMockChannelID())
|
||||
suite.NoError(err, "service must not throw error")
|
||||
suite.NotEmpty(timeStamp, "timeStamp must not be empty")
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_PostMessageWithAttachments_FailureCase() {
|
||||
suite.SocketModeClientWrapper.PostMessageMock.Return("", "", GetMockSlackError())
|
||||
|
||||
timeStamp, err := suite.SlackService.PostMessageWithAttachments(GetMockChannelID(), GetMockAttachment())
|
||||
suite.Error(err, "service must throw error")
|
||||
suite.Empty(timeStamp, "timeStamp must be empty")
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_PostMessageWithAttachments_SuccessCase() {
|
||||
suite.SocketModeClientWrapper.PostMessageMock.Return(GetMockChannelID(), GetMockTimeStamp(), nil)
|
||||
|
||||
timeStamp, err := suite.SlackService.PostMessageWithAttachments(GetMockChannelID(), GetMockAttachment())
|
||||
suite.NoError(err, "service must not throw error")
|
||||
suite.NotEmpty(timeStamp, "timeStamp must not be empty")
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_UpdateMessageWithAttachments_FailureCase() {
|
||||
suite.SocketModeClientWrapper.UpdateMessageMock.Return("", "", "", GetMockSlackError())
|
||||
|
||||
err := suite.SlackService.UpdateMessageWithAttachments(GetMockChannelID(), GetMockTimeStamp(), GetMockAttachment())
|
||||
suite.Error(err, "service must throw error")
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_UpdateMessageWithAttachments_SuccessCase() {
|
||||
suite.SocketModeClientWrapper.UpdateMessageMock.Return("", "", "", nil)
|
||||
|
||||
err := suite.SlackService.UpdateMessageWithAttachments(GetMockChannelID(), GetMockTimeStamp(), GetMockAttachment())
|
||||
suite.NoError(err, "service must not throw error")
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_PostEphemeralByChannelID_FailureCase() {
|
||||
suite.SocketModeClientWrapper.PostEphemeralMock.Return("", GetMockSlackError())
|
||||
|
||||
err := suite.SlackService.PostEphemeralByChannelID(GetMockMessageText(), GetMockRecipientID(), false, GetMockChannelID())
|
||||
suite.Error(err, "service must throw error")
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_PostEphemeralByChannelID_SuccessCase() {
|
||||
suite.SocketModeClientWrapper.PostEphemeralMock.Return(GetMockTimeStamp(), nil)
|
||||
|
||||
err := suite.SlackService.PostEphemeralByChannelID(GetMockMessageText(), GetMockRecipientID(), false, GetMockChannelID())
|
||||
suite.NoError(err, "service must not throw error")
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_PostMessageBlocks_FailureCase() {
|
||||
suite.SocketModeClientWrapper.PostMessageMock.Return("", "", GetMockSlackError())
|
||||
|
||||
timeStamp, err := suite.SlackService.PostMessageBlocks(GetMockChannelID(), GetMockBlock(), GetMockColor())
|
||||
suite.Error(err, "service must throw error")
|
||||
suite.Empty(timeStamp, "timeStamp must be empty")
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) Test_PostMessageBlocks_SuccessCase() {
|
||||
suite.SocketModeClientWrapper.PostMessageMock.Return(GetMockChannelID(), GetMockTimeStamp(), nil)
|
||||
|
||||
timeStamp, err := suite.SlackService.PostMessageBlocks(GetMockChannelID(), GetMockBlock(), GetMockColor())
|
||||
suite.NoError(err, "service must not throw error")
|
||||
suite.NotEmpty(timeStamp, "timeStamp must not be empty")
|
||||
}
|
||||
|
||||
func GetMockMessageText() string {
|
||||
return "Hello World!"
|
||||
}
|
||||
|
||||
func GetMockMessageOption() slack.MsgOption {
|
||||
return slack.MsgOptionText(GetMockMessageText(), false)
|
||||
}
|
||||
|
||||
func GetMockChannelID() string {
|
||||
return "C123"
|
||||
}
|
||||
|
||||
func GetMockRecipientID() string {
|
||||
return "U123"
|
||||
}
|
||||
|
||||
func GetMockTimeStamp() string {
|
||||
return "1234"
|
||||
}
|
||||
|
||||
func GetMockSlackError() error {
|
||||
return errors.New("failed to send message")
|
||||
}
|
||||
|
||||
func GetMockFilePath() string {
|
||||
return "mock/file/path"
|
||||
}
|
||||
|
||||
func GetMockAttachment() slack.Attachment {
|
||||
return slack.Attachment{}
|
||||
}
|
||||
|
||||
func GetMockBlock() slack.Blocks {
|
||||
return slack.Blocks{}
|
||||
}
|
||||
|
||||
func GetMockColor() string {
|
||||
return "red"
|
||||
}
|
||||
|
||||
func GetMockChannel() *slack.Channel {
|
||||
return &slack.Channel{
|
||||
GroupConversation: slack.GroupConversation{},
|
||||
IsChannel: true,
|
||||
IsGeneral: true,
|
||||
IsMember: true,
|
||||
Locale: "",
|
||||
}
|
||||
}
|
||||
|
||||
func (suite *SlackServiceSuite) SetupSuite() {
|
||||
logger.InitLogger()
|
||||
suite.SocketModeClientWrapper = *mocks.NewISocketModeClientWrapperMock(suite.T())
|
||||
suite.SlackService = &SlackService{
|
||||
SocketModeClientWrapper: &suite.SocketModeClientWrapper,
|
||||
}
|
||||
}
|
||||
|
||||
func TestSlackServiceSuite(t *testing.T) {
|
||||
suite.Run(t, new(SlackServiceSuite))
|
||||
}
|
||||
Reference in New Issue
Block a user