From 52b5e9b7b7bd9c08f7d35edfdef4c6290bc064eb Mon Sep 17 00:00:00 2001 From: Lorenz Herzberger Date: Wed, 14 Jun 2023 11:15:34 +0200 Subject: [PATCH] added mocks for testing and test cases Signed-off-by: Lorenz Herzberger --- go.mod | 1 + testutil/keeper/asset.go | 20 ++-- x/asset/keeper/msg_server_test.go | 14 +-- x/asset/testutil/expected_keepers_mocks.go | 126 +++++++++++++++++++++ 4 files changed, 141 insertions(+), 20 deletions(-) create mode 100644 x/asset/testutil/expected_keepers_mocks.go diff --git a/go.mod b/go.mod index d139a62..785104b 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( github.com/cosmos/cosmos-sdk v0.46.7 github.com/cosmos/ibc-go/v6 v6.1.0 github.com/gogo/protobuf v1.3.3 + github.com/golang/mock v1.6.0 github.com/golang/protobuf v1.5.3 github.com/gorilla/mux v1.8.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 diff --git a/testutil/keeper/asset.go b/testutil/keeper/asset.go index 09d7949..92e1132 100644 --- a/testutil/keeper/asset.go +++ b/testutil/keeper/asset.go @@ -3,9 +3,11 @@ package keeper import ( "testing" + "planetmint-go/testutil/sample" "planetmint-go/x/asset/keeper" "planetmint-go/x/asset/types" - machinetypes "planetmint-go/x/machine/types" + + assettestutils "planetmint-go/x/asset/testutil" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" @@ -13,7 +15,10 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" typesparams "github.com/cosmos/cosmos-sdk/x/params/types" + "github.com/golang/mock/gomock" "github.com/stretchr/testify/require" + "github.com/tendermint/tendermint/libs/log" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" tmdb "github.com/tendermint/tm-db" ) @@ -26,9 +31,6 @@ func AssetKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { stateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db) stateStore.MountStoreWithDB(memStoreKey, storetypes.StoreTypeMemory, nil) - mkStoreKey := sdk.NewKVStoreKey(machinetypes.StoreKey) - stateStore.MountStoreWithDB(mkStoreKey, storetypes.StoreTypeIAVL, db) - require.NoError(t, stateStore.LoadLatestVersion()) registry := codectypes.NewInterfaceRegistry() @@ -40,7 +42,13 @@ func AssetKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { memStoreKey, "AssetParams", ) - mk, ctx := MachineKeeper(t) + + ctx := sdk.NewContext(stateStore, tmproto.Header{}, false, log.NewNopLogger()) + + ctrl := gomock.NewController(t) + mk := assettestutils.NewMockMachineKeeper(ctrl) + mk.EXPECT().GetMachine(ctx, "pubkey").Return(sample.Machine(), true) + k := keeper.NewKeeper( cdc, storeKey, @@ -49,8 +57,6 @@ func AssetKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { mk, ) - // ctx := sdk.NewContext(stateStore, tmproto.Header{}, false, log.NewNopLogger()) - // Initialize params k.SetParams(ctx, types.DefaultParams()) diff --git a/x/asset/keeper/msg_server_test.go b/x/asset/keeper/msg_server_test.go index 55d2e01..eba8898 100644 --- a/x/asset/keeper/msg_server_test.go +++ b/x/asset/keeper/msg_server_test.go @@ -5,7 +5,6 @@ import ( "testing" keepertest "planetmint-go/testutil/keeper" - sample "planetmint-go/testutil/sample" "planetmint-go/x/asset/keeper" "planetmint-go/x/asset/types" @@ -18,22 +17,11 @@ func setupMsgServer(t testing.TB) (types.MsgServer, context.Context) { return keeper.NewMsgServerImpl(*k), sdk.WrapSDKContext(ctx) } -func prepareMachine(t testing.TB, ctx sdk.Context) { - // store machine to test - machine := sample.Machine() - k, _ := keepertest.MachineKeeper(t) - k.StoreMachine(ctx, machine) -} - func TestMsgServerNotarizeAsset(t *testing.T) { - // machine pubkey for now - msg := types.NewMsgNotarizeAsset("pubkey", "cid", "sign", "pubkey") - msgServer, ctx := setupMsgServer(t) - prepareMachine(t, sdk.UnwrapSDKContext(ctx)) res, err := msgServer.NotarizeAsset(ctx, msg) if assert.NoError(t, err) { - assert.Equal(t, types.MsgNotarizeAssetResponse{}, res) + assert.Equal(t, &types.MsgNotarizeAssetResponse{}, res) } } diff --git a/x/asset/testutil/expected_keepers_mocks.go b/x/asset/testutil/expected_keepers_mocks.go new file mode 100644 index 0000000..b66b548 --- /dev/null +++ b/x/asset/testutil/expected_keepers_mocks.go @@ -0,0 +1,126 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: x/asset/types/expected_keepers.go + +// Package testutil is a generated GoMock package. +package testutil + +import ( + types1 "planetmint-go/x/machine/types" + reflect "reflect" + + types "github.com/cosmos/cosmos-sdk/types" + types0 "github.com/cosmos/cosmos-sdk/x/auth/types" + gomock "github.com/golang/mock/gomock" +) + +// MockAccountKeeper is a mock of AccountKeeper interface. +type MockAccountKeeper struct { + ctrl *gomock.Controller + recorder *MockAccountKeeperMockRecorder +} + +// MockAccountKeeperMockRecorder is the mock recorder for MockAccountKeeper. +type MockAccountKeeperMockRecorder struct { + mock *MockAccountKeeper +} + +// NewMockAccountKeeper creates a new mock instance. +func NewMockAccountKeeper(ctrl *gomock.Controller) *MockAccountKeeper { + mock := &MockAccountKeeper{ctrl: ctrl} + mock.recorder = &MockAccountKeeperMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockAccountKeeper) EXPECT() *MockAccountKeeperMockRecorder { + return m.recorder +} + +// GetAccount mocks base method. +func (m *MockAccountKeeper) GetAccount(ctx types.Context, addr types.AccAddress) types0.AccountI { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetAccount", ctx, addr) + ret0, _ := ret[0].(types0.AccountI) + return ret0 +} + +// GetAccount indicates an expected call of GetAccount. +func (mr *MockAccountKeeperMockRecorder) GetAccount(ctx, addr interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAccount", reflect.TypeOf((*MockAccountKeeper)(nil).GetAccount), ctx, addr) +} + +// MockBankKeeper is a mock of BankKeeper interface. +type MockBankKeeper struct { + ctrl *gomock.Controller + recorder *MockBankKeeperMockRecorder +} + +// MockBankKeeperMockRecorder is the mock recorder for MockBankKeeper. +type MockBankKeeperMockRecorder struct { + mock *MockBankKeeper +} + +// NewMockBankKeeper creates a new mock instance. +func NewMockBankKeeper(ctrl *gomock.Controller) *MockBankKeeper { + mock := &MockBankKeeper{ctrl: ctrl} + mock.recorder = &MockBankKeeperMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockBankKeeper) EXPECT() *MockBankKeeperMockRecorder { + return m.recorder +} + +// SpendableCoins mocks base method. +func (m *MockBankKeeper) SpendableCoins(ctx types.Context, addr types.AccAddress) types.Coins { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SpendableCoins", ctx, addr) + ret0, _ := ret[0].(types.Coins) + return ret0 +} + +// SpendableCoins indicates an expected call of SpendableCoins. +func (mr *MockBankKeeperMockRecorder) SpendableCoins(ctx, addr interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SpendableCoins", reflect.TypeOf((*MockBankKeeper)(nil).SpendableCoins), ctx, addr) +} + +// MockMachineKeeper is a mock of MachineKeeper interface. +type MockMachineKeeper struct { + ctrl *gomock.Controller + recorder *MockMachineKeeperMockRecorder +} + +// MockMachineKeeperMockRecorder is the mock recorder for MockMachineKeeper. +type MockMachineKeeperMockRecorder struct { + mock *MockMachineKeeper +} + +// NewMockMachineKeeper creates a new mock instance. +func NewMockMachineKeeper(ctrl *gomock.Controller) *MockMachineKeeper { + mock := &MockMachineKeeper{ctrl: ctrl} + mock.recorder = &MockMachineKeeperMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockMachineKeeper) EXPECT() *MockMachineKeeperMockRecorder { + return m.recorder +} + +// GetMachine mocks base method. +func (m *MockMachineKeeper) GetMachine(ctx types.Context, pubKey string) (types1.Machine, bool) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetMachine", ctx, pubKey) + ret0, _ := ret[0].(types1.Machine) + ret1, _ := ret[1].(bool) + return ret0, ret1 +} + +// GetMachine indicates an expected call of GetMachine. +func (mr *MockMachineKeeperMockRecorder) GetMachine(ctx, pubKey interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMachine", reflect.TypeOf((*MockMachineKeeper)(nil).GetMachine), ctx, pubKey) +}