mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-10-27 14:02:15 +08:00
101 lines
2.6 KiB
Go
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
|