github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/gov/keeper/vote_test.go (about) 1 package keeper 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 8 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/gov/types" 9 ) 10 11 func TestVotes(t *testing.T) { 12 ctx, _, keeper, _, _ := createTestInput(t, false, 100) 13 14 tp := TestProposal 15 proposal, err := keeper.SubmitProposal(ctx, tp) 16 require.NoError(t, err) 17 proposalID := proposal.ProposalID 18 19 var invalidOption types.VoteOption = 0x10 20 21 require.Error(t, keeper.AddVote(ctx, proposalID, TestAddrs[0], types.OptionYes), "proposal not on voting period") 22 require.Error(t, keeper.AddVote(ctx, 10, TestAddrs[0], types.OptionYes), "invalid proposal ID") 23 24 proposal.Status = types.StatusVotingPeriod 25 keeper.SetProposal(ctx, proposal) 26 27 require.Error(t, keeper.AddVote(ctx, proposalID, TestAddrs[0], invalidOption), "invalid option") 28 29 // Test first vote 30 require.NoError(t, keeper.AddVote(ctx, proposalID, TestAddrs[0], types.OptionAbstain)) 31 vote, found := keeper.GetVote(ctx, proposalID, TestAddrs[0]) 32 require.True(t, found) 33 require.Equal(t, TestAddrs[0], vote.Voter) 34 require.Equal(t, proposalID, vote.ProposalID) 35 require.Equal(t, types.OptionAbstain, vote.Option) 36 37 // Test change of vote 38 require.NoError(t, keeper.AddVote(ctx, proposalID, TestAddrs[0], types.OptionYes)) 39 vote, found = keeper.GetVote(ctx, proposalID, TestAddrs[0]) 40 require.True(t, found) 41 require.Equal(t, TestAddrs[0], vote.Voter) 42 require.Equal(t, proposalID, vote.ProposalID) 43 require.Equal(t, types.OptionYes, vote.Option) 44 45 // Test second vote 46 require.NoError(t, keeper.AddVote(ctx, proposalID, TestAddrs[1], types.OptionNoWithVeto)) 47 vote, found = keeper.GetVote(ctx, proposalID, TestAddrs[1]) 48 require.True(t, found) 49 require.Equal(t, TestAddrs[1], vote.Voter) 50 require.Equal(t, proposalID, vote.ProposalID) 51 require.Equal(t, types.OptionNoWithVeto, vote.Option) 52 53 // Test vote iterator 54 // NOTE order of deposits is determined by the addresses 55 votes := keeper.GetAllVotes(ctx) 56 require.Len(t, votes, 2) 57 require.Equal(t, votes, keeper.GetVotes(ctx, proposalID)) 58 require.Equal(t, TestAddrs[0], votes[0].Voter) 59 require.Equal(t, proposalID, votes[0].ProposalID) 60 require.Equal(t, types.OptionYes, votes[0].Option) 61 require.Equal(t, TestAddrs[1], votes[1].Voter) 62 require.Equal(t, proposalID, votes[1].ProposalID) 63 require.Equal(t, types.OptionNoWithVeto, votes[1].Option) 64 }