1
0
mirror of https://github.com/nikoksr/notify.git synced 2025-02-07 13:08:12 +02:00

adding tests

This commit is contained in:
gtourkas 2021-03-21 17:08:31 +02:00
parent 09ee9c672e
commit d61e3712f5
3 changed files with 85 additions and 1 deletions

View File

@ -0,0 +1,27 @@
// Code generated by mockery 2.7.4. DO NOT EDIT.
package wechat
import (
message "github.com/silenceper/wechat/v2/officialaccount/message"
mock "github.com/stretchr/testify/mock"
)
// mockWechatMessageManager is an autogenerated mock type for the wechatMessageManager type
type mockWechatMessageManager struct {
mock.Mock
}
// Send provides a mock function with given fields: msg
func (_m *mockWechatMessageManager) Send(msg *message.CustomerMessage) error {
ret := _m.Called(msg)
var r0 error
if rf, ok := ret.Get(0).(func(*message.CustomerMessage) error); ok {
r0 = rf(msg)
} else {
r0 = ret.Error(0)
}
return r0
}

View File

@ -23,10 +23,15 @@ type Config struct {
EncodingAESKey string
}
// wechatMessageManager abstracts go-wechat's message.Manager for writing unit tests
type wechatMessageManager interface {
Send(msg *message.CustomerMessage) error
}
// Service encapsulates the WeChat client along with internal state for storing users.
type Service struct {
config Config
messageManager *message.Manager
messageManager wechatMessageManager
userIDs []string
}

View File

@ -0,0 +1,52 @@
package wechat
import (
"context"
"github.com/silenceper/wechat/v2/officialaccount/message"
"github.com/pkg/errors"
"github.com/stretchr/testify/require"
"testing"
)
func TestAddReceivers(t *testing.T) {
assert := require.New(t)
svc := &Service{
userIDs: []string{},
}
userIDs := []string{"User1ID", "User2ID", "User3ID"}
svc.AddReceivers(userIDs...)
assert.Equal(svc.userIDs, userIDs)
}
func TestSend(t *testing.T) {
assert := require.New(t)
svc := &Service{
userIDs: []string{},
}
// test wechat message manager returning error
mockMsgManager := new(mockWechatMessageManager)
mockMsgManager.On("Send", message.NewCustomerTextMessage("UserID1", "subject\nmessage")).
Return(errors.New("some error"))
svc.messageManager = mockMsgManager
svc.AddReceivers("UserID1")
ctx := context.Background()
err := svc.Send(ctx, "subject", "message")
assert.NotNil(err)
mockMsgManager.AssertExpectations(t)
// test success and multiple receivers
mockMsgManager = new(mockWechatMessageManager)
mockMsgManager.On("Send", message.NewCustomerTextMessage("UserID1", "subject\nmessage")).
Return(nil)
mockMsgManager.On("Send", message.NewCustomerTextMessage("UserID2", "subject\nmessage")).
Return(nil)
svc.messageManager = mockMsgManager
svc.AddReceivers("UserID1", "UserID2")
err = svc.Send(ctx, "subject", "message")
assert.Nil(err)
mockMsgManager.AssertExpectations(t)
}