diff --git a/tests/integration/gov/keeper/common_test.go b/tests/integration/gov/keeper/common_test.go index f11589e924..db294d5c33 100644 --- a/tests/integration/gov/keeper/common_test.go +++ b/tests/integration/gov/keeper/common_test.go @@ -3,53 +3,40 @@ package keeper_test import ( "testing" - "cosmossdk.io/simapp" "gotest.tools/v3/assert" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - "github.com/cosmos/cosmos-sdk/testutil/testdata" sdk "github.com/cosmos/cosmos-sdk/types" - moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" "github.com/cosmos/cosmos-sdk/x/gov/types" v1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) -var ( - _, _, addr = testdata.KeyTestPubAddr() - govAcct = authtypes.NewModuleAddress(types.ModuleName) - TestProposal = getTestProposal() -) +var TestProposal = getTestProposal() func getTestProposal() []sdk.Msg { legacyProposalMsg, err := v1.NewLegacyContent(v1beta1.NewTextProposal("Title", "description"), authtypes.NewModuleAddress(types.ModuleName).String()) if err != nil { panic(err) } + testProposal := v1beta1.NewTextProposal("Proposal", "testing proposal") + legacyProposalMsg2, err := v1.NewLegacyContent(testProposal, authtypes.NewModuleAddress(types.ModuleName).String()) + if err != nil { + panic(err) + } return []sdk.Msg{ - banktypes.NewMsgSend(govAcct, addr, sdk.NewCoins(sdk.NewCoin("stake", sdk.NewInt(1000)))), legacyProposalMsg, + legacyProposalMsg2, } } -func createValidators(t *testing.T, ctx sdk.Context, app *simapp.SimApp, powers []int64) ([]sdk.AccAddress, []sdk.ValAddress) { - addrs := simtestutil.AddTestAddrsIncremental(app.BankKeeper, app.StakingKeeper, ctx, 5, sdk.NewInt(30000000)) +func createValidators(t *testing.T, f *fixture, powers []int64) ([]sdk.AccAddress, []sdk.ValAddress) { + addrs := simtestutil.AddTestAddrsIncremental(f.bankKeeper, f.stakingKeeper, f.ctx, 5, sdk.NewInt(30000000)) valAddrs := simtestutil.ConvertAddrsToValAddrs(addrs) pks := simtestutil.CreateTestPubKeys(5) - cdc := moduletestutil.MakeTestEncodingConfig().Codec - - app.StakingKeeper = stakingkeeper.NewKeeper( - cdc, - app.GetKey(stakingtypes.StoreKey), - app.AccountKeeper, - app.BankKeeper, - authtypes.NewModuleAddress(types.ModuleName).String(), - ) val1, err := stakingtypes.NewValidator(valAddrs[0], pks[0], stakingtypes.Description{}) assert.NilError(t, err) @@ -58,21 +45,21 @@ func createValidators(t *testing.T, ctx sdk.Context, app *simapp.SimApp, powers val3, err := stakingtypes.NewValidator(valAddrs[2], pks[2], stakingtypes.Description{}) assert.NilError(t, err) - app.StakingKeeper.SetValidator(ctx, val1) - app.StakingKeeper.SetValidator(ctx, val2) - app.StakingKeeper.SetValidator(ctx, val3) - app.StakingKeeper.SetValidatorByConsAddr(ctx, val1) - app.StakingKeeper.SetValidatorByConsAddr(ctx, val2) - app.StakingKeeper.SetValidatorByConsAddr(ctx, val3) - app.StakingKeeper.SetNewValidatorByPowerIndex(ctx, val1) - app.StakingKeeper.SetNewValidatorByPowerIndex(ctx, val2) - app.StakingKeeper.SetNewValidatorByPowerIndex(ctx, val3) + f.stakingKeeper.SetValidator(f.ctx, val1) + f.stakingKeeper.SetValidator(f.ctx, val2) + f.stakingKeeper.SetValidator(f.ctx, val3) + f.stakingKeeper.SetValidatorByConsAddr(f.ctx, val1) + f.stakingKeeper.SetValidatorByConsAddr(f.ctx, val2) + f.stakingKeeper.SetValidatorByConsAddr(f.ctx, val3) + f.stakingKeeper.SetNewValidatorByPowerIndex(f.ctx, val1) + f.stakingKeeper.SetNewValidatorByPowerIndex(f.ctx, val2) + f.stakingKeeper.SetNewValidatorByPowerIndex(f.ctx, val3) - _, _ = app.StakingKeeper.Delegate(ctx, addrs[0], app.StakingKeeper.TokensFromConsensusPower(ctx, powers[0]), stakingtypes.Unbonded, val1, true) - _, _ = app.StakingKeeper.Delegate(ctx, addrs[1], app.StakingKeeper.TokensFromConsensusPower(ctx, powers[1]), stakingtypes.Unbonded, val2, true) - _, _ = app.StakingKeeper.Delegate(ctx, addrs[2], app.StakingKeeper.TokensFromConsensusPower(ctx, powers[2]), stakingtypes.Unbonded, val3, true) + _, _ = f.stakingKeeper.Delegate(f.ctx, addrs[0], f.stakingKeeper.TokensFromConsensusPower(f.ctx, powers[0]), stakingtypes.Unbonded, val1, true) + _, _ = f.stakingKeeper.Delegate(f.ctx, addrs[1], f.stakingKeeper.TokensFromConsensusPower(f.ctx, powers[1]), stakingtypes.Unbonded, val2, true) + _, _ = f.stakingKeeper.Delegate(f.ctx, addrs[2], f.stakingKeeper.TokensFromConsensusPower(f.ctx, powers[2]), stakingtypes.Unbonded, val3, true) - app.StakingKeeper.EndBlocker(ctx) + f.stakingKeeper.EndBlocker(f.ctx) return addrs, valAddrs } diff --git a/tests/integration/gov/keeper/grpc_query_test.go b/tests/integration/gov/keeper/grpc_query_test.go index 2d75ee69ce..e8793b8cc3 100644 --- a/tests/integration/gov/keeper/grpc_query_test.go +++ b/tests/integration/gov/keeper/grpc_query_test.go @@ -17,9 +17,9 @@ func TestGRPCQueryTally(t *testing.T) { t.Parallel() f := initFixture(t) - app, ctx, queryClient := f.app, f.ctx, f.queryClient + ctx, queryClient := f.ctx, f.queryClient - addrs, _ := createValidators(t, ctx, app, []int64{5, 5, 5}) + addrs, _ := createValidators(t, f, []int64{5, 5, 5}) var ( req *v1.QueryTallyResultRequest @@ -61,7 +61,7 @@ func TestGRPCQueryTally(t *testing.T) { "create a proposal and get tally", func() { var err error - proposal, err = app.GovKeeper.SubmitProposal(ctx, TestProposal, "", "test", "description", addrs[0], false) + proposal, err = f.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "description", addrs[0], false) assert.NilError(t, err) assert.Assert(t, proposal.String() != "") @@ -79,11 +79,11 @@ func TestGRPCQueryTally(t *testing.T) { "request tally after few votes", func() { proposal.Status = v1.StatusVotingPeriod - app.GovKeeper.SetProposal(ctx, proposal) + f.govKeeper.SetProposal(ctx, proposal) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposal.Id, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposal.Id, addrs[1], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposal.Id, addrs[2], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposal.Id, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposal.Id, addrs[1], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposal.Id, addrs[2], v1.NewNonSplitVoteOption(v1.OptionYes), "")) req = &v1.QueryTallyResultRequest{ProposalId: proposal.Id} @@ -103,8 +103,8 @@ func TestGRPCQueryTally(t *testing.T) { "request final tally after status changed", func() { proposal.Status = v1.StatusPassed - app.GovKeeper.SetProposal(ctx, proposal) - proposal, _ = app.GovKeeper.Proposals.Get(ctx, proposal.Id) + f.govKeeper.SetProposal(ctx, proposal) + proposal, _ = f.govKeeper.Proposals.Get(ctx, proposal.Id) req = &v1.QueryTallyResultRequest{ProposalId: proposal.Id} @@ -136,11 +136,12 @@ func TestGRPCQueryTally(t *testing.T) { func TestLegacyGRPCQueryTally(t *testing.T) { t.Parallel() + f := initFixture(t) - app, ctx, queryClient := f.app, f.ctx, f.legacyQueryClient + ctx, queryClient := f.ctx, f.legacyQueryClient - addrs, _ := createValidators(t, ctx, app, []int64{5, 5, 5}) + addrs, _ := createValidators(t, f, []int64{5, 5, 5}) var ( req *v1beta1.QueryTallyResultRequest @@ -182,7 +183,7 @@ func TestLegacyGRPCQueryTally(t *testing.T) { "create a proposal and get tally", func() { var err error - proposal, err = app.GovKeeper.SubmitProposal(ctx, TestProposal, "", "test", "description", addrs[0], false) + proposal, err = f.govKeeper.SubmitProposal(ctx, TestProposal, "", "test", "description", addrs[0], false) assert.NilError(t, err) assert.Assert(t, proposal.String() != "") @@ -200,11 +201,11 @@ func TestLegacyGRPCQueryTally(t *testing.T) { "request tally after few votes", func() { proposal.Status = v1.StatusVotingPeriod - app.GovKeeper.SetProposal(ctx, proposal) + f.govKeeper.SetProposal(ctx, proposal) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposal.Id, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposal.Id, addrs[1], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposal.Id, addrs[2], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposal.Id, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposal.Id, addrs[1], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposal.Id, addrs[2], v1.NewNonSplitVoteOption(v1.OptionYes), "")) req = &v1beta1.QueryTallyResultRequest{ProposalId: proposal.Id} @@ -224,8 +225,8 @@ func TestLegacyGRPCQueryTally(t *testing.T) { "request final tally after status changed", func() { proposal.Status = v1.StatusPassed - app.GovKeeper.SetProposal(ctx, proposal) - proposal, _ = app.GovKeeper.Proposals.Get(ctx, proposal.Id) + f.govKeeper.SetProposal(ctx, proposal) + proposal, _ = f.govKeeper.Proposals.Get(ctx, proposal.Id) req = &v1beta1.QueryTallyResultRequest{ProposalId: proposal.Id} diff --git a/tests/integration/gov/keeper/keeper_test.go b/tests/integration/gov/keeper/keeper_test.go index 0ed7148180..0a4455b93d 100644 --- a/tests/integration/gov/keeper/keeper_test.go +++ b/tests/integration/gov/keeper/keeper_test.go @@ -3,68 +3,152 @@ package keeper_test import ( "testing" - "cosmossdk.io/simapp" + "cosmossdk.io/log" + storetypes "cosmossdk.io/store/types" cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" "gotest.tools/v3/assert" "github.com/cosmos/cosmos-sdk/baseapp" - simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + "github.com/cosmos/cosmos-sdk/runtime" + "github.com/cosmos/cosmos-sdk/testutil/integration" sdk "github.com/cosmos/cosmos-sdk/types" + moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" + "github.com/cosmos/cosmos-sdk/x/auth" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + "github.com/cosmos/cosmos-sdk/x/bank" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/cosmos/cosmos-sdk/x/distribution" + distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + "github.com/cosmos/cosmos-sdk/x/gov" "github.com/cosmos/cosmos-sdk/x/gov/keeper" "github.com/cosmos/cosmos-sdk/x/gov/types" v1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" + "github.com/cosmos/cosmos-sdk/x/staking" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) -// fixture only tests gov's keeper logic around tallying, since it -// relies on complex interactions with x/staking. -// -// It also uses simapp (and not a depinjected app) because we manually set a -// new app.StakingKeeper in `createValidators`. type fixture struct { - app *simapp.SimApp - ctx sdk.Context + ctx sdk.Context + queryClient v1.QueryClient legacyQueryClient v1beta1.QueryClient - addrs []sdk.AccAddress - msgSrvr v1.MsgServer - legacyMsgSrvr v1beta1.MsgServer + + bankKeeper bankkeeper.Keeper + stakingKeeper *stakingkeeper.Keeper + govKeeper *keeper.Keeper } -// initFixture uses simapp (and not a depinjected app) because we manually set a -// new app.StakingKeeper in `createValidators` which is used in most of the -// gov keeper tests. -func initFixture(t *testing.T) *fixture { - f := &fixture{} +func initFixture(t testing.TB) *fixture { + keys := storetypes.NewKVStoreKeys( + authtypes.StoreKey, banktypes.StoreKey, distrtypes.StoreKey, stakingtypes.StoreKey, types.StoreKey, + ) + cdc := moduletestutil.MakeTestEncodingConfig(auth.AppModuleBasic{}, bank.AppModuleBasic{}, gov.AppModuleBasic{}).Codec - app := simapp.Setup(t, false) - ctx := app.BaseApp.NewContext(false, cmtproto.Header{}) + logger := log.NewTestLogger(t) + cms := integration.CreateMultiStore(keys, logger) - // Populate the gov account with some coins, as the TestProposal we have - // is a MsgSend from the gov account. - coins := sdk.NewCoins(sdk.NewCoin("stake", sdk.NewInt(100000))) - err := app.BankKeeper.MintCoins(ctx, minttypes.ModuleName, coins) + newCtx := sdk.NewContext(cms, cmtproto.Header{}, true, logger) + + authority := authtypes.NewModuleAddress(types.ModuleName) + + maccPerms := map[string][]string{ + distrtypes.ModuleName: nil, + minttypes.ModuleName: {authtypes.Minter}, + stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, + stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, + types.ModuleName: {authtypes.Burner}, + } + + accountKeeper := authkeeper.NewAccountKeeper( + cdc, + runtime.NewKVStoreService(keys[authtypes.StoreKey]), + authtypes.ProtoBaseAccount, + maccPerms, + sdk.Bech32MainPrefix, + authority.String(), + ) + + blockedAddresses := map[string]bool{ + accountKeeper.GetAuthority(): false, + } + bankKeeper := bankkeeper.NewBaseKeeper( + cdc, + runtime.NewKVStoreService(keys[banktypes.StoreKey]), + accountKeeper, + blockedAddresses, + authority.String(), + log.NewNopLogger(), + ) + + stakingKeeper := stakingkeeper.NewKeeper(cdc, keys[stakingtypes.StoreKey], accountKeeper, bankKeeper, authority.String()) + + // set default staking params + stakingKeeper.SetParams(newCtx, stakingtypes.DefaultParams()) + + distrKeeper := distrkeeper.NewKeeper( + cdc, runtime.NewKVStoreService(keys[distrtypes.StoreKey]), accountKeeper, bankKeeper, stakingKeeper, distrtypes.ModuleName, authority.String(), + ) + + // Create MsgServiceRouter, but don't populate it before creating the gov + // keeper. + router := baseapp.NewMsgServiceRouter() + router.SetInterfaceRegistry(cdc.InterfaceRegistry()) + + govKeeper := keeper.NewKeeper( + cdc, + runtime.NewKVStoreService(keys[types.StoreKey]), + accountKeeper, + bankKeeper, + stakingKeeper, + distrKeeper, + router, + types.DefaultConfig(), + authority.String(), + ) + err := govKeeper.ProposalID.Set(newCtx, 1) assert.NilError(t, err) - err = app.BankKeeper.SendCoinsFromModuleToModule(ctx, minttypes.ModuleName, types.ModuleName, coins) + govRouter := v1beta1.NewRouter() + govRouter.AddRoute(types.RouterKey, v1beta1.ProposalHandler) + govKeeper.SetLegacyRouter(govRouter) + err = govKeeper.Params.Set(newCtx, v1.DefaultParams()) assert.NilError(t, err) - queryHelper := baseapp.NewQueryServerTestHelper(ctx, app.InterfaceRegistry()) - v1.RegisterQueryServer(queryHelper, keeper.NewQueryServer(*app.GovKeeper)) - legacyQueryHelper := baseapp.NewQueryServerTestHelper(ctx, app.InterfaceRegistry()) - v1beta1.RegisterQueryServer(legacyQueryHelper, keeper.NewLegacyQueryServer(app.GovKeeper)) - queryClient := v1.NewQueryClient(queryHelper) - legacyQueryClient := v1beta1.NewQueryClient(legacyQueryHelper) + authModule := auth.NewAppModule(cdc, accountKeeper, authsims.RandomGenesisAccounts, nil) + bankModule := bank.NewAppModule(cdc, bankKeeper, accountKeeper, nil) + stakingModule := staking.NewAppModule(cdc, stakingKeeper, accountKeeper, bankKeeper, nil) + distrModule := distribution.NewAppModule(cdc, distrKeeper, accountKeeper, bankKeeper, stakingKeeper, nil) + govModule := gov.NewAppModule(cdc, govKeeper, accountKeeper, bankKeeper, nil) - f.app = app - f.ctx = ctx - f.queryClient = queryClient - f.legacyQueryClient = legacyQueryClient - f.msgSrvr = keeper.NewMsgServerImpl(f.app.GovKeeper) + integrationApp := integration.NewIntegrationApp(newCtx, logger, keys, cdc, authModule, bankModule, stakingModule, distrModule, govModule) - govAcct := f.app.GovKeeper.GetGovernanceAccount(f.ctx).GetAddress() - f.legacyMsgSrvr = keeper.NewLegacyMsgServerImpl(govAcct.String(), f.msgSrvr) - f.addrs = simtestutil.AddTestAddrsIncremental(app.BankKeeper, app.StakingKeeper, ctx, 2, sdk.NewInt(30000000)) + sdkCtx := sdk.UnwrapSDKContext(integrationApp.Context()) - return f + msgSrvr := keeper.NewMsgServerImpl(govKeeper) + legacyMsgSrvr := keeper.NewLegacyMsgServerImpl(authority.String(), msgSrvr) + + // Register MsgServer and QueryServer + v1.RegisterMsgServer(router, msgSrvr) + v1beta1.RegisterMsgServer(router, legacyMsgSrvr) + + v1.RegisterQueryServer(integrationApp.QueryHelper(), keeper.NewQueryServer(govKeeper)) + v1beta1.RegisterQueryServer(integrationApp.QueryHelper(), keeper.NewLegacyQueryServer(govKeeper)) + + queryClient := v1.NewQueryClient(integrationApp.QueryHelper()) + legacyQueryClient := v1beta1.NewQueryClient(integrationApp.QueryHelper()) + + return &fixture{ + ctx: sdkCtx, + queryClient: queryClient, + legacyQueryClient: legacyQueryClient, + bankKeeper: bankKeeper, + stakingKeeper: stakingKeeper, + govKeeper: govKeeper, + } } diff --git a/tests/integration/gov/keeper/tally_test.go b/tests/integration/gov/keeper/tally_test.go index 5507a1de84..ad705b7c9a 100644 --- a/tests/integration/gov/keeper/tally_test.go +++ b/tests/integration/gov/keeper/tally_test.go @@ -15,20 +15,20 @@ func TestTallyNoOneVotes(t *testing.T) { t.Parallel() f := initFixture(t) - app, ctx := f.app, f.ctx + ctx := f.ctx - createValidators(t, ctx, app, []int64{5, 5, 5}) + createValidators(t, f, []int64{5, 5, 5}) tp := TestProposal - proposal, err := app.GovKeeper.SubmitProposal(ctx, tp, "", "test", "description", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) + proposal, err := f.govKeeper.SubmitProposal(ctx, tp, "", "test", "description", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) assert.NilError(t, err) proposalID := proposal.Id proposal.Status = v1.StatusVotingPeriod - app.GovKeeper.SetProposal(ctx, proposal) + f.govKeeper.SetProposal(ctx, proposal) - proposal, ok := app.GovKeeper.Proposals.Get(ctx, proposalID) + proposal, ok := f.govKeeper.Proposals.Get(ctx, proposalID) assert.Assert(t, ok) - passes, burnDeposits, tallyResults, _ := app.GovKeeper.Tally(ctx, proposal) + passes, burnDeposits, tallyResults, _ := f.govKeeper.Tally(ctx, proposal) assert.Assert(t, passes == false) assert.Assert(t, burnDeposits == false) @@ -37,53 +37,55 @@ func TestTallyNoOneVotes(t *testing.T) { func TestTallyNoQuorum(t *testing.T) { t.Parallel() + f := initFixture(t) - app, ctx := f.app, f.ctx + ctx := f.ctx - createValidators(t, ctx, app, []int64{2, 5, 0}) + createValidators(t, f, []int64{2, 5, 0}) - addrs := simtestutil.AddTestAddrsIncremental(app.BankKeeper, app.StakingKeeper, ctx, 1, sdk.NewInt(10000000)) + addrs := simtestutil.AddTestAddrsIncremental(f.bankKeeper, f.stakingKeeper, ctx, 1, sdk.NewInt(10000000)) tp := TestProposal - proposal, err := app.GovKeeper.SubmitProposal(ctx, tp, "", "test", "description", addrs[0], false) + proposal, err := f.govKeeper.SubmitProposal(ctx, tp, "", "test", "description", addrs[0], false) assert.NilError(t, err) proposalID := proposal.Id proposal.Status = v1.StatusVotingPeriod - app.GovKeeper.SetProposal(ctx, proposal) + f.govKeeper.SetProposal(ctx, proposal) - err = app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "") + err = f.govKeeper.AddVote(ctx, proposalID, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "") assert.NilError(t, err) - proposal, ok := app.GovKeeper.Proposals.Get(ctx, proposalID) + proposal, ok := f.govKeeper.Proposals.Get(ctx, proposalID) assert.Assert(t, ok) - passes, burnDeposits, _, _ := app.GovKeeper.Tally(ctx, proposal) + passes, burnDeposits, _, _ := f.govKeeper.Tally(ctx, proposal) assert.Assert(t, passes == false) assert.Assert(t, burnDeposits == false) } func TestTallyOnlyValidatorsAllYes(t *testing.T) { t.Parallel() + f := initFixture(t) - app, ctx := f.app, f.ctx + ctx := f.ctx - addrs, _ := createValidators(t, ctx, app, []int64{5, 5, 5}) + addrs, _ := createValidators(t, f, []int64{5, 5, 5}) tp := TestProposal - proposal, err := app.GovKeeper.SubmitProposal(ctx, tp, "", "test", "description", addrs[0], false) + proposal, err := f.govKeeper.SubmitProposal(ctx, tp, "", "test", "description", addrs[0], false) assert.NilError(t, err) proposalID := proposal.Id proposal.Status = v1.StatusVotingPeriod - app.GovKeeper.SetProposal(ctx, proposal) + f.govKeeper.SetProposal(ctx, proposal) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[1], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[2], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - proposal, ok := app.GovKeeper.Proposals.Get(ctx, proposalID) + proposal, ok := f.govKeeper.Proposals.Get(ctx, proposalID) assert.Assert(t, ok) - passes, burnDeposits, tallyResults, _ := app.GovKeeper.Tally(ctx, proposal) + passes, burnDeposits, tallyResults, _ := f.govKeeper.Tally(ctx, proposal) assert.Assert(t, passes) assert.Assert(t, burnDeposits == false) @@ -92,25 +94,26 @@ func TestTallyOnlyValidatorsAllYes(t *testing.T) { func TestTallyOnlyValidators51No(t *testing.T) { t.Parallel() + f := initFixture(t) - app, ctx := f.app, f.ctx + ctx := f.ctx - valAccAddrs, _ := createValidators(t, ctx, app, []int64{5, 6, 0}) + valAccAddrs, _ := createValidators(t, f, []int64{5, 6, 0}) tp := TestProposal - proposal, err := app.GovKeeper.SubmitProposal(ctx, tp, "", "test", "description", valAccAddrs[0], false) + proposal, err := f.govKeeper.SubmitProposal(ctx, tp, "", "test", "description", valAccAddrs[0], false) assert.NilError(t, err) proposalID := proposal.Id proposal.Status = v1.StatusVotingPeriod - app.GovKeeper.SetProposal(ctx, proposal) + f.govKeeper.SetProposal(ctx, proposal) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1.NewNonSplitVoteOption(v1.OptionNo), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1.NewNonSplitVoteOption(v1.OptionNo), "")) - proposal, ok := app.GovKeeper.Proposals.Get(ctx, proposalID) + proposal, ok := f.govKeeper.Proposals.Get(ctx, proposalID) assert.Assert(t, ok) - passes, burnDeposits, _, _ := app.GovKeeper.Tally(ctx, proposal) + passes, burnDeposits, _, _ := f.govKeeper.Tally(ctx, proposal) assert.Assert(t, passes == false) assert.Assert(t, burnDeposits == false) @@ -118,25 +121,26 @@ func TestTallyOnlyValidators51No(t *testing.T) { func TestTallyOnlyValidators51Yes(t *testing.T) { t.Parallel() + f := initFixture(t) - app, ctx := f.app, f.ctx + ctx := f.ctx - valAccAddrs, _ := createValidators(t, ctx, app, []int64{5, 6, 0}) + valAccAddrs, _ := createValidators(t, f, []int64{5, 6, 0}) tp := TestProposal - proposal, err := app.GovKeeper.SubmitProposal(ctx, tp, "", "test", "description", valAccAddrs[0], false) + proposal, err := f.govKeeper.SubmitProposal(ctx, tp, "", "test", "description", valAccAddrs[0], false) assert.NilError(t, err) proposalID := proposal.Id proposal.Status = v1.StatusVotingPeriod - app.GovKeeper.SetProposal(ctx, proposal) + f.govKeeper.SetProposal(ctx, proposal) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1.NewNonSplitVoteOption(v1.OptionNo), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1.NewNonSplitVoteOption(v1.OptionNo), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - proposal, ok := app.GovKeeper.Proposals.Get(ctx, proposalID) + proposal, ok := f.govKeeper.Proposals.Get(ctx, proposalID) assert.Assert(t, ok) - passes, burnDeposits, tallyResults, _ := app.GovKeeper.Tally(ctx, proposal) + passes, burnDeposits, tallyResults, _ := f.govKeeper.Tally(ctx, proposal) assert.Assert(t, passes) assert.Assert(t, burnDeposits == false) @@ -145,26 +149,27 @@ func TestTallyOnlyValidators51Yes(t *testing.T) { func TestTallyOnlyValidatorsVetoed(t *testing.T) { t.Parallel() + f := initFixture(t) - app, ctx := f.app, f.ctx + ctx := f.ctx - valAccAddrs, _ := createValidators(t, ctx, app, []int64{6, 6, 7}) + valAccAddrs, _ := createValidators(t, f, []int64{6, 6, 7}) tp := TestProposal - proposal, err := app.GovKeeper.SubmitProposal(ctx, tp, "", "test", "description", valAccAddrs[0], false) + proposal, err := f.govKeeper.SubmitProposal(ctx, tp, "", "test", "description", valAccAddrs[0], false) assert.NilError(t, err) proposalID := proposal.Id proposal.Status = v1.StatusVotingPeriod - app.GovKeeper.SetProposal(ctx, proposal) + f.govKeeper.SetProposal(ctx, proposal) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[2], v1.NewNonSplitVoteOption(v1.OptionNoWithVeto), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, valAccAddrs[2], v1.NewNonSplitVoteOption(v1.OptionNoWithVeto), "")) - proposal, ok := app.GovKeeper.Proposals.Get(ctx, proposalID) + proposal, ok := f.govKeeper.Proposals.Get(ctx, proposalID) assert.Assert(t, ok) - passes, burnDeposits, tallyResults, _ := app.GovKeeper.Tally(ctx, proposal) + passes, burnDeposits, tallyResults, _ := f.govKeeper.Tally(ctx, proposal) assert.Assert(t, passes == false) assert.Assert(t, burnDeposits) @@ -173,26 +178,27 @@ func TestTallyOnlyValidatorsVetoed(t *testing.T) { func TestTallyOnlyValidatorsAbstainPasses(t *testing.T) { t.Parallel() + f := initFixture(t) - app, ctx := f.app, f.ctx + ctx := f.ctx - valAccAddrs, _ := createValidators(t, ctx, app, []int64{6, 6, 7}) + valAccAddrs, _ := createValidators(t, f, []int64{6, 6, 7}) tp := TestProposal - proposal, err := app.GovKeeper.SubmitProposal(ctx, tp, "", "test", "description", valAccAddrs[0], false) + proposal, err := f.govKeeper.SubmitProposal(ctx, tp, "", "test", "description", valAccAddrs[0], false) assert.NilError(t, err) proposalID := proposal.Id proposal.Status = v1.StatusVotingPeriod - app.GovKeeper.SetProposal(ctx, proposal) + f.govKeeper.SetProposal(ctx, proposal) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1.NewNonSplitVoteOption(v1.OptionAbstain), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1.NewNonSplitVoteOption(v1.OptionNo), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[2], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1.NewNonSplitVoteOption(v1.OptionAbstain), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1.NewNonSplitVoteOption(v1.OptionNo), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, valAccAddrs[2], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - proposal, ok := app.GovKeeper.Proposals.Get(ctx, proposalID) + proposal, ok := f.govKeeper.Proposals.Get(ctx, proposalID) assert.Assert(t, ok) - passes, burnDeposits, tallyResults, _ := app.GovKeeper.Tally(ctx, proposal) + passes, burnDeposits, tallyResults, _ := f.govKeeper.Tally(ctx, proposal) assert.Assert(t, passes) assert.Assert(t, burnDeposits == false) @@ -201,26 +207,27 @@ func TestTallyOnlyValidatorsAbstainPasses(t *testing.T) { func TestTallyOnlyValidatorsAbstainFails(t *testing.T) { t.Parallel() + f := initFixture(t) - app, ctx := f.app, f.ctx + ctx := f.ctx - valAccAddrs, _ := createValidators(t, ctx, app, []int64{6, 6, 7}) + valAccAddrs, _ := createValidators(t, f, []int64{6, 6, 7}) tp := TestProposal - proposal, err := app.GovKeeper.SubmitProposal(ctx, tp, "", "test", "description", valAccAddrs[0], false) + proposal, err := f.govKeeper.SubmitProposal(ctx, tp, "", "test", "description", valAccAddrs[0], false) assert.NilError(t, err) proposalID := proposal.Id proposal.Status = v1.StatusVotingPeriod - app.GovKeeper.SetProposal(ctx, proposal) + f.govKeeper.SetProposal(ctx, proposal) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1.NewNonSplitVoteOption(v1.OptionAbstain), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddrs[2], v1.NewNonSplitVoteOption(v1.OptionNo), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, valAccAddrs[0], v1.NewNonSplitVoteOption(v1.OptionAbstain), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, valAccAddrs[1], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, valAccAddrs[2], v1.NewNonSplitVoteOption(v1.OptionNo), "")) - proposal, ok := app.GovKeeper.Proposals.Get(ctx, proposalID) + proposal, ok := f.govKeeper.Proposals.Get(ctx, proposalID) assert.Assert(t, ok) - passes, burnDeposits, tallyResults, _ := app.GovKeeper.Tally(ctx, proposal) + passes, burnDeposits, tallyResults, _ := f.govKeeper.Tally(ctx, proposal) assert.Assert(t, passes == false) assert.Assert(t, burnDeposits == false) @@ -229,26 +236,27 @@ func TestTallyOnlyValidatorsAbstainFails(t *testing.T) { func TestTallyOnlyValidatorsNonVoter(t *testing.T) { t.Parallel() + f := initFixture(t) - app, ctx := f.app, f.ctx + ctx := f.ctx - valAccAddrs, _ := createValidators(t, ctx, app, []int64{5, 6, 7}) + valAccAddrs, _ := createValidators(t, f, []int64{5, 6, 7}) valAccAddr1, valAccAddr2 := valAccAddrs[0], valAccAddrs[1] tp := TestProposal - proposal, err := app.GovKeeper.SubmitProposal(ctx, tp, "", "test", "description", valAccAddrs[0], false) + proposal, err := f.govKeeper.SubmitProposal(ctx, tp, "", "test", "description", valAccAddrs[0], false) assert.NilError(t, err) proposalID := proposal.Id proposal.Status = v1.StatusVotingPeriod - app.GovKeeper.SetProposal(ctx, proposal) + f.govKeeper.SetProposal(ctx, proposal) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddr1, v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, valAccAddr2, v1.NewNonSplitVoteOption(v1.OptionNo), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, valAccAddr1, v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, valAccAddr2, v1.NewNonSplitVoteOption(v1.OptionNo), "")) - proposal, ok := app.GovKeeper.Proposals.Get(ctx, proposalID) + proposal, ok := f.govKeeper.Proposals.Get(ctx, proposalID) assert.Assert(t, ok) - passes, burnDeposits, tallyResults, _ := app.GovKeeper.Tally(ctx, proposal) + passes, burnDeposits, tallyResults, _ := f.govKeeper.Tally(ctx, proposal) assert.Assert(t, passes == false) assert.Assert(t, burnDeposits == false) @@ -257,36 +265,37 @@ func TestTallyOnlyValidatorsNonVoter(t *testing.T) { func TestTallyDelgatorOverride(t *testing.T) { t.Parallel() + f := initFixture(t) - app, ctx := f.app, f.ctx + ctx := f.ctx - addrs, valAddrs := createValidators(t, ctx, app, []int64{5, 6, 7}) + addrs, valAddrs := createValidators(t, f, []int64{5, 6, 7}) - delTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 30) - val1, found := app.StakingKeeper.GetValidator(ctx, valAddrs[0]) + delTokens := f.stakingKeeper.TokensFromConsensusPower(ctx, 30) + val1, found := f.stakingKeeper.GetValidator(ctx, valAddrs[0]) assert.Assert(t, found) - _, err := app.StakingKeeper.Delegate(ctx, addrs[4], delTokens, stakingtypes.Unbonded, val1, true) + _, err := f.stakingKeeper.Delegate(ctx, addrs[4], delTokens, stakingtypes.Unbonded, val1, true) assert.NilError(t, err) - app.StakingKeeper.EndBlocker(ctx) + f.stakingKeeper.EndBlocker(ctx) tp := TestProposal - proposal, err := app.GovKeeper.SubmitProposal(ctx, tp, "", "test", "description", addrs[0], false) + proposal, err := f.govKeeper.SubmitProposal(ctx, tp, "", "test", "description", addrs[0], false) assert.NilError(t, err) proposalID := proposal.Id proposal.Status = v1.StatusVotingPeriod - app.GovKeeper.SetProposal(ctx, proposal) + f.govKeeper.SetProposal(ctx, proposal) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[3], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[4], v1.NewNonSplitVoteOption(v1.OptionNo), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[1], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[2], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[3], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[4], v1.NewNonSplitVoteOption(v1.OptionNo), "")) - proposal, ok := app.GovKeeper.Proposals.Get(ctx, proposalID) + proposal, ok := f.govKeeper.Proposals.Get(ctx, proposalID) assert.Assert(t, ok) - passes, burnDeposits, tallyResults, _ := app.GovKeeper.Tally(ctx, proposal) + passes, burnDeposits, tallyResults, _ := f.govKeeper.Tally(ctx, proposal) assert.Assert(t, passes == false) assert.Assert(t, burnDeposits == false) @@ -295,35 +304,36 @@ func TestTallyDelgatorOverride(t *testing.T) { func TestTallyDelgatorInherit(t *testing.T) { t.Parallel() + f := initFixture(t) - app, ctx := f.app, f.ctx + ctx := f.ctx - addrs, vals := createValidators(t, ctx, app, []int64{5, 6, 7}) + addrs, vals := createValidators(t, f, []int64{5, 6, 7}) - delTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 30) - val3, found := app.StakingKeeper.GetValidator(ctx, vals[2]) + delTokens := f.stakingKeeper.TokensFromConsensusPower(ctx, 30) + val3, found := f.stakingKeeper.GetValidator(ctx, vals[2]) assert.Assert(t, found) - _, err := app.StakingKeeper.Delegate(ctx, addrs[3], delTokens, stakingtypes.Unbonded, val3, true) + _, err := f.stakingKeeper.Delegate(ctx, addrs[3], delTokens, stakingtypes.Unbonded, val3, true) assert.NilError(t, err) - app.StakingKeeper.EndBlocker(ctx) + f.stakingKeeper.EndBlocker(ctx) tp := TestProposal - proposal, err := app.GovKeeper.SubmitProposal(ctx, tp, "", "test", "description", addrs[0], false) + proposal, err := f.govKeeper.SubmitProposal(ctx, tp, "", "test", "description", addrs[0], false) assert.NilError(t, err) proposalID := proposal.Id proposal.Status = v1.StatusVotingPeriod - app.GovKeeper.SetProposal(ctx, proposal) + f.govKeeper.SetProposal(ctx, proposal) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1.NewNonSplitVoteOption(v1.OptionNo), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1.NewNonSplitVoteOption(v1.OptionNo), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[0], v1.NewNonSplitVoteOption(v1.OptionNo), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[1], v1.NewNonSplitVoteOption(v1.OptionNo), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[2], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - proposal, ok := app.GovKeeper.Proposals.Get(ctx, proposalID) - assert.Assert(t, ok) - passes, burnDeposits, tallyResults, _ := app.GovKeeper.Tally(ctx, proposal) + proposal, err = f.govKeeper.Proposals.Get(ctx, proposalID) + assert.NilError(t, err) + passes, burnDeposits, tallyResults, _ := f.govKeeper.Tally(ctx, proposal) assert.Assert(t, passes) assert.Assert(t, burnDeposits == false) @@ -332,40 +342,41 @@ func TestTallyDelgatorInherit(t *testing.T) { func TestTallyDelgatorMultipleOverride(t *testing.T) { t.Parallel() + f := initFixture(t) - app, ctx := f.app, f.ctx + ctx := f.ctx - addrs, vals := createValidators(t, ctx, app, []int64{5, 6, 7}) + addrs, vals := createValidators(t, f, []int64{5, 6, 7}) - delTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) - val1, found := app.StakingKeeper.GetValidator(ctx, vals[0]) + delTokens := f.stakingKeeper.TokensFromConsensusPower(ctx, 10) + val1, found := f.stakingKeeper.GetValidator(ctx, vals[0]) assert.Assert(t, found) - val2, found := app.StakingKeeper.GetValidator(ctx, vals[1]) + val2, found := f.stakingKeeper.GetValidator(ctx, vals[1]) assert.Assert(t, found) - _, err := app.StakingKeeper.Delegate(ctx, addrs[3], delTokens, stakingtypes.Unbonded, val1, true) + _, err := f.stakingKeeper.Delegate(ctx, addrs[3], delTokens, stakingtypes.Unbonded, val1, true) assert.NilError(t, err) - _, err = app.StakingKeeper.Delegate(ctx, addrs[3], delTokens, stakingtypes.Unbonded, val2, true) + _, err = f.stakingKeeper.Delegate(ctx, addrs[3], delTokens, stakingtypes.Unbonded, val2, true) assert.NilError(t, err) - app.StakingKeeper.EndBlocker(ctx) + f.stakingKeeper.EndBlocker(ctx) tp := TestProposal - proposal, err := app.GovKeeper.SubmitProposal(ctx, tp, "", "test", "description", addrs[0], false) + proposal, err := f.govKeeper.SubmitProposal(ctx, tp, "", "test", "description", addrs[0], false) assert.NilError(t, err) proposalID := proposal.Id proposal.Status = v1.StatusVotingPeriod - app.GovKeeper.SetProposal(ctx, proposal) + f.govKeeper.SetProposal(ctx, proposal) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[3], v1.NewNonSplitVoteOption(v1.OptionNo), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[1], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[2], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[3], v1.NewNonSplitVoteOption(v1.OptionNo), "")) - proposal, ok := app.GovKeeper.Proposals.Get(ctx, proposalID) + proposal, ok := f.govKeeper.Proposals.Get(ctx, proposalID) assert.Assert(t, ok) - passes, burnDeposits, tallyResults, _ := app.GovKeeper.Tally(ctx, proposal) + passes, burnDeposits, tallyResults, _ := f.govKeeper.Tally(ctx, proposal) assert.Assert(t, passes == false) assert.Assert(t, burnDeposits == false) @@ -374,41 +385,42 @@ func TestTallyDelgatorMultipleOverride(t *testing.T) { func TestTallyDelgatorMultipleInherit(t *testing.T) { t.Parallel() + f := initFixture(t) - app, ctx := f.app, f.ctx + ctx := f.ctx - createValidators(t, ctx, app, []int64{25, 6, 7}) + createValidators(t, f, []int64{25, 6, 7}) - addrs, vals := createValidators(t, ctx, app, []int64{5, 6, 7}) + addrs, vals := createValidators(t, f, []int64{5, 6, 7}) - delTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) - val2, found := app.StakingKeeper.GetValidator(ctx, vals[1]) + delTokens := f.stakingKeeper.TokensFromConsensusPower(ctx, 10) + val2, found := f.stakingKeeper.GetValidator(ctx, vals[1]) assert.Assert(t, found) - val3, found := app.StakingKeeper.GetValidator(ctx, vals[2]) + val3, found := f.stakingKeeper.GetValidator(ctx, vals[2]) assert.Assert(t, found) - _, err := app.StakingKeeper.Delegate(ctx, addrs[3], delTokens, stakingtypes.Unbonded, val2, true) + _, err := f.stakingKeeper.Delegate(ctx, addrs[3], delTokens, stakingtypes.Unbonded, val2, true) assert.NilError(t, err) - _, err = app.StakingKeeper.Delegate(ctx, addrs[3], delTokens, stakingtypes.Unbonded, val3, true) + _, err = f.stakingKeeper.Delegate(ctx, addrs[3], delTokens, stakingtypes.Unbonded, val3, true) assert.NilError(t, err) - app.StakingKeeper.EndBlocker(ctx) + f.stakingKeeper.EndBlocker(ctx) tp := TestProposal - proposal, err := app.GovKeeper.SubmitProposal(ctx, tp, "", "test", "description", addrs[0], false) + proposal, err := f.govKeeper.SubmitProposal(ctx, tp, "", "test", "description", addrs[0], false) assert.NilError(t, err) proposalID := proposal.Id proposal.Status = v1.StatusVotingPeriod - app.GovKeeper.SetProposal(ctx, proposal) + f.govKeeper.SetProposal(ctx, proposal) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1.NewNonSplitVoteOption(v1.OptionNo), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1.NewNonSplitVoteOption(v1.OptionNo), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[1], v1.NewNonSplitVoteOption(v1.OptionNo), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[2], v1.NewNonSplitVoteOption(v1.OptionNo), "")) - proposal, ok := app.GovKeeper.Proposals.Get(ctx, proposalID) + proposal, ok := f.govKeeper.Proposals.Get(ctx, proposalID) assert.Assert(t, ok) - passes, burnDeposits, tallyResults, _ := app.GovKeeper.Tally(ctx, proposal) + passes, burnDeposits, tallyResults, _ := f.govKeeper.Tally(ctx, proposal) assert.Assert(t, passes == false) assert.Assert(t, burnDeposits == false) @@ -417,43 +429,44 @@ func TestTallyDelgatorMultipleInherit(t *testing.T) { func TestTallyJailedValidator(t *testing.T) { t.Parallel() + f := initFixture(t) - app, ctx := f.app, f.ctx + ctx := f.ctx - addrs, valAddrs := createValidators(t, ctx, app, []int64{25, 6, 7}) + addrs, valAddrs := createValidators(t, f, []int64{25, 6, 7}) - delTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) - val2, found := app.StakingKeeper.GetValidator(ctx, valAddrs[1]) + delTokens := f.stakingKeeper.TokensFromConsensusPower(ctx, 10) + val2, found := f.stakingKeeper.GetValidator(ctx, valAddrs[1]) assert.Assert(t, found) - val3, found := app.StakingKeeper.GetValidator(ctx, valAddrs[2]) + val3, found := f.stakingKeeper.GetValidator(ctx, valAddrs[2]) assert.Assert(t, found) - _, err := app.StakingKeeper.Delegate(ctx, addrs[3], delTokens, stakingtypes.Unbonded, val2, true) + _, err := f.stakingKeeper.Delegate(ctx, addrs[3], delTokens, stakingtypes.Unbonded, val2, true) assert.NilError(t, err) - _, err = app.StakingKeeper.Delegate(ctx, addrs[3], delTokens, stakingtypes.Unbonded, val3, true) + _, err = f.stakingKeeper.Delegate(ctx, addrs[3], delTokens, stakingtypes.Unbonded, val3, true) assert.NilError(t, err) - app.StakingKeeper.EndBlocker(ctx) + f.stakingKeeper.EndBlocker(ctx) consAddr, err := val2.GetConsAddr() assert.NilError(t, err) - app.StakingKeeper.Jail(ctx, sdk.ConsAddress(consAddr.Bytes())) + f.stakingKeeper.Jail(ctx, sdk.ConsAddress(consAddr.Bytes())) tp := TestProposal - proposal, err := app.GovKeeper.SubmitProposal(ctx, tp, "", "test", "description", addrs[0], false) + proposal, err := f.govKeeper.SubmitProposal(ctx, tp, "", "test", "description", addrs[0], false) assert.NilError(t, err) proposalID := proposal.Id proposal.Status = v1.StatusVotingPeriod - app.GovKeeper.SetProposal(ctx, proposal) + f.govKeeper.SetProposal(ctx, proposal) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1.NewNonSplitVoteOption(v1.OptionNo), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1.NewNonSplitVoteOption(v1.OptionNo), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[1], v1.NewNonSplitVoteOption(v1.OptionNo), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[2], v1.NewNonSplitVoteOption(v1.OptionNo), "")) - proposal, ok := app.GovKeeper.Proposals.Get(ctx, proposalID) + proposal, ok := f.govKeeper.Proposals.Get(ctx, proposalID) assert.Assert(t, ok) - passes, burnDeposits, tallyResults, _ := app.GovKeeper.Tally(ctx, proposal) + passes, burnDeposits, tallyResults, _ := f.govKeeper.Tally(ctx, proposal) assert.Assert(t, passes) assert.Assert(t, burnDeposits == false) @@ -462,41 +475,42 @@ func TestTallyJailedValidator(t *testing.T) { func TestTallyValidatorMultipleDelegations(t *testing.T) { t.Parallel() + f := initFixture(t) - app, ctx := f.app, f.ctx + ctx := f.ctx - addrs, valAddrs := createValidators(t, ctx, app, []int64{10, 10, 10}) + addrs, valAddrs := createValidators(t, f, []int64{10, 10, 10}) - delTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) - val2, found := app.StakingKeeper.GetValidator(ctx, valAddrs[1]) + delTokens := f.stakingKeeper.TokensFromConsensusPower(ctx, 10) + val2, found := f.stakingKeeper.GetValidator(ctx, valAddrs[1]) assert.Assert(t, found) - _, err := app.StakingKeeper.Delegate(ctx, addrs[0], delTokens, stakingtypes.Unbonded, val2, true) + _, err := f.stakingKeeper.Delegate(ctx, addrs[0], delTokens, stakingtypes.Unbonded, val2, true) assert.NilError(t, err) tp := TestProposal - proposal, err := app.GovKeeper.SubmitProposal(ctx, tp, "", "test", "description", addrs[0], false) + proposal, err := f.govKeeper.SubmitProposal(ctx, tp, "", "test", "description", addrs[0], false) assert.NilError(t, err) proposalID := proposal.Id proposal.Status = v1.StatusVotingPeriod - app.GovKeeper.SetProposal(ctx, proposal) + f.govKeeper.SetProposal(ctx, proposal) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[1], v1.NewNonSplitVoteOption(v1.OptionNo), "")) - assert.NilError(t, app.GovKeeper.AddVote(ctx, proposalID, addrs[2], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[0], v1.NewNonSplitVoteOption(v1.OptionYes), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[1], v1.NewNonSplitVoteOption(v1.OptionNo), "")) + assert.NilError(t, f.govKeeper.AddVote(ctx, proposalID, addrs[2], v1.NewNonSplitVoteOption(v1.OptionYes), "")) - proposal, ok := app.GovKeeper.Proposals.Get(ctx, proposalID) + proposal, ok := f.govKeeper.Proposals.Get(ctx, proposalID) assert.Assert(t, ok) - passes, burnDeposits, tallyResults, _ := app.GovKeeper.Tally(ctx, proposal) + passes, burnDeposits, tallyResults, _ := f.govKeeper.Tally(ctx, proposal) assert.Assert(t, passes) assert.Assert(t, burnDeposits == false) - expectedYes := app.StakingKeeper.TokensFromConsensusPower(ctx, 30) - expectedAbstain := app.StakingKeeper.TokensFromConsensusPower(ctx, 0) - expectedNo := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) - expectedNoWithVeto := app.StakingKeeper.TokensFromConsensusPower(ctx, 0) + expectedYes := f.stakingKeeper.TokensFromConsensusPower(ctx, 30) + expectedAbstain := f.stakingKeeper.TokensFromConsensusPower(ctx, 0) + expectedNo := f.stakingKeeper.TokensFromConsensusPower(ctx, 10) + expectedNoWithVeto := f.stakingKeeper.TokensFromConsensusPower(ctx, 0) expectedTallyResult := v1.NewTallyResult(expectedYes, expectedAbstain, expectedNo, expectedNoWithVeto) assert.Assert(t, tallyResults.Equals(expectedTallyResult)) diff --git a/x/gov/keeper/grpc_query.go b/x/gov/keeper/grpc_query.go index 286d2dc1cd..6b2b9f01ed 100644 --- a/x/gov/keeper/grpc_query.go +++ b/x/gov/keeper/grpc_query.go @@ -10,6 +10,7 @@ import ( "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" v3 "github.com/cosmos/cosmos-sdk/x/gov/migrations/v3" @@ -19,9 +20,9 @@ import ( var _ v1.QueryServer = queryServer{} -type queryServer struct{ k Keeper } +type queryServer struct{ k *Keeper } -func NewQueryServer(k Keeper) v1.QueryServer { +func NewQueryServer(k *Keeper) v1.QueryServer { return queryServer{k: k} } @@ -283,7 +284,7 @@ type legacyQueryServer struct{ qs v1.QueryServer } // NewLegacyQueryServer returns an implementation of the v1beta1 legacy QueryServer interface. func NewLegacyQueryServer(k *Keeper) v1beta1.QueryServer { - return &legacyQueryServer{qs: NewQueryServer(*k)} + return &legacyQueryServer{qs: NewQueryServer(k)} } func (q legacyQueryServer) Proposal(ctx context.Context, req *v1beta1.QueryProposalRequest) (*v1beta1.QueryProposalResponse, error) { diff --git a/x/gov/keeper/keeper_test.go b/x/gov/keeper/keeper_test.go index 0e403519b6..07280298b9 100644 --- a/x/gov/keeper/keeper_test.go +++ b/x/gov/keeper/keeper_test.go @@ -56,7 +56,7 @@ func (suite *KeeperTestSuite) reset() { suite.NoError(err) queryHelper := baseapp.NewQueryServerTestHelper(ctx, encCfg.InterfaceRegistry) - v1.RegisterQueryServer(queryHelper, keeper.NewQueryServer(*govKeeper)) + v1.RegisterQueryServer(queryHelper, keeper.NewQueryServer(govKeeper)) legacyQueryHelper := baseapp.NewQueryServerTestHelper(ctx, encCfg.InterfaceRegistry) v1beta1.RegisterQueryServer(legacyQueryHelper, keeper.NewLegacyQueryServer(govKeeper)) queryClient := v1.NewQueryClient(queryHelper) diff --git a/x/gov/module.go b/x/gov/module.go index d148eecab7..19fee11bfc 100644 --- a/x/gov/module.go +++ b/x/gov/module.go @@ -284,7 +284,7 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { legacyQueryServer := keeper.NewLegacyQueryServer(am.keeper) v1beta1.RegisterQueryServer(cfg.QueryServer(), legacyQueryServer) - v1.RegisterQueryServer(cfg.QueryServer(), keeper.NewQueryServer(*am.keeper)) + v1.RegisterQueryServer(cfg.QueryServer(), keeper.NewQueryServer(am.keeper)) m := keeper.NewMigrator(am.keeper, am.legacySubspace) if err := cfg.RegisterMigration(govtypes.ModuleName, 1, m.Migrate1to2); err != nil {