85 lines
2.5 KiB
Go
85 lines
2.5 KiB
Go
package keeper_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/cosmos/cosmos-sdk/baseapp"
|
|
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
|
|
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
|
|
"github.com/cosmos/cosmos-sdk/x/group"
|
|
groupkeeper "github.com/cosmos/cosmos-sdk/x/group/keeper"
|
|
"github.com/cosmos/cosmos-sdk/x/group/testutil"
|
|
stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
|
|
"github.com/stretchr/testify/require"
|
|
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
|
|
)
|
|
|
|
func TestQueryGroupsByMember(t *testing.T) {
|
|
var (
|
|
bankKeeper bankkeeper.Keeper
|
|
groupKeeper groupkeeper.Keeper
|
|
stakingKeeper *stakingkeeper.Keeper
|
|
interfaceRegistry codectypes.InterfaceRegistry
|
|
)
|
|
app, err := simtestutil.Setup(
|
|
testutil.AppConfig,
|
|
&interfaceRegistry,
|
|
&bankKeeper,
|
|
&groupKeeper,
|
|
&stakingKeeper,
|
|
)
|
|
require.NoError(t, err)
|
|
|
|
ctx := app.BaseApp.NewContext(false, tmproto.Header{})
|
|
queryHelper := baseapp.NewQueryServerTestHelper(ctx, interfaceRegistry)
|
|
group.RegisterQueryServer(queryHelper, groupKeeper)
|
|
queryClient := group.NewQueryClient(queryHelper)
|
|
sdkCtx := sdk.WrapSDKContext(ctx)
|
|
|
|
addrs := simtestutil.AddTestAddrsIncremental(bankKeeper, stakingKeeper, ctx, 6, sdk.NewInt(30000000))
|
|
|
|
// Initial group, group policy and balance setup
|
|
members := []group.MemberRequest{
|
|
{Address: addrs[2].String(), Weight: "1"}, {Address: addrs[3].String(), Weight: "2"},
|
|
}
|
|
|
|
_, err = groupKeeper.CreateGroup(sdkCtx, &group.MsgCreateGroup{
|
|
Admin: addrs[0].String(),
|
|
Members: members,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
members = []group.MemberRequest{
|
|
{Address: addrs[3].String(), Weight: "1"}, {Address: addrs[4].String(), Weight: "2"},
|
|
}
|
|
_, err = groupKeeper.CreateGroup(sdkCtx, &group.MsgCreateGroup{
|
|
Admin: addrs[1].String(),
|
|
Members: members,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
// not part of any group
|
|
resp, err := queryClient.GroupsByMember(context.Background(), &group.QueryGroupsByMemberRequest{
|
|
Address: addrs[5].String(),
|
|
})
|
|
require.NoError(t, err)
|
|
require.Len(t, resp.Groups, 0)
|
|
|
|
// expect one group
|
|
resp, err = queryClient.GroupsByMember(context.Background(), &group.QueryGroupsByMemberRequest{
|
|
Address: addrs[4].String(),
|
|
})
|
|
require.NoError(t, err)
|
|
require.Len(t, resp.Groups, 1)
|
|
|
|
// expect two groups
|
|
resp, err = queryClient.GroupsByMember(context.Background(), &group.QueryGroupsByMemberRequest{
|
|
Address: addrs[3].String(),
|
|
})
|
|
require.NoError(t, err)
|
|
require.Len(t, resp.Groups, 2)
|
|
}
|