truongpx-Mac 819a6e58ce update
2024-10-07 18:06:59 +07:00

101 lines
2.6 KiB
Go

package user
import (
"context"
"fmt"
"testing"
pbuser "github.com/OpenIMSDK/protocol/user"
"github.com/openimsdk/open-im-server/v3/internal/rpc/user/mocks"
"github.com/openimsdk/open-im-server/v3/internal/rpc/user/service"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
)
var mockUserDatabase = &mocks.UserDatabase{}
// var uServer userServer
// func inti() {
// }
func TestGetDesignateUsers(t *testing.T) {
uServer := userServer{UserDatabase: mockUserDatabase}
mockUserDatabase.On("FindWithError", mock.Anything, mock.Anything).Return([]*relation.UserModel{{UserID: "99"}}, nil)
ctx := context.Background()
res, err := uServer.GetDesignateUsers(ctx, &pbuser.GetDesignateUsersReq{UserIDs: []string{}})
assert.NoError(t, err)
assert.Equal(t, "99", res.UsersInfo[0].UserID)
t.Logf("success")
}
type MyMockedObject struct {
mock.Mock
}
func (m *MyMockedObject) DoSomeThing(number int) (bool, error) {
args := m.Called(number)
return args.Bool(0), args.Error(1)
}
func TestDataProvider(t *testing.T) {
testOjb := new(MyMockedObject)
testOjb.On("DoSomeThing", mock.Anything).Return(true, nil)
targetFuncThatDoesSomethingWithObj(*testOjb)
testOjb.AssertExpectations(t)
///////
mock := &mocks.DataProvider{}
// Set the expected return value for the GetRandomNumber method
mock.On("GetRandomNumber", 5).Return(3, nil).Once()
// Call ConsumeData that using the mocked DataProvider
result, err := ConsumeData(mock, 5)
// Assert that the result and error are as expected
assert.Equal(t, "Odd", result)
assert.NoError(t, err)
// Assert that the GetRandomNumber method was called with the expected input
mock.AssertExpectations(t)
}
func targetFuncThatDoesSomethingWithObj(testObj MyMockedObject) {
fmt.Println(testObj.DoSomeThing(12))
}
// ConsumeData is a function that uses a DataProvider to fetch and process data.
func ConsumeData(provider service.DataProvider, id int) (string, error) {
// Use GetRandomNumber to get a random number between 0 and id
randomNumber, err := provider.GetRandomNumber(id)
if err != nil {
return "", err
}
// Check whether the value is even or odd
result := checkEvenOrOdd(randomNumber)
// Return the result
return result, nil
}
// checkEvenOrOdd checks whether the given value is even or odd.
func checkEvenOrOdd(value int) string {
if value%2 == 0 {
return "Even"
}
return "Odd"
}
//mockery --dir ../../../pkg/common/db/controller --name UserDatabase
//mockery --all --output path/to/output
//mockery --all --recursive
//mockery --output ./mocks --dir ./service --all