github.com/Finschia/finschia-sdk@v0.48.1/x/gov/simulation/decoder_test.go (about) 1 package simulation_test 2 3 import ( 4 "encoding/binary" 5 "fmt" 6 "testing" 7 "time" 8 9 "github.com/stretchr/testify/require" 10 11 "github.com/Finschia/finschia-sdk/crypto/keys/ed25519" 12 "github.com/Finschia/finschia-sdk/simapp" 13 sdk "github.com/Finschia/finschia-sdk/types" 14 "github.com/Finschia/finschia-sdk/types/kv" 15 "github.com/Finschia/finschia-sdk/x/gov/simulation" 16 "github.com/Finschia/finschia-sdk/x/gov/types" 17 ) 18 19 var ( 20 delPk1 = ed25519.GenPrivKey().PubKey() 21 delAddr1 = sdk.AccAddress(delPk1.Address()) 22 ) 23 24 func TestDecodeStore(t *testing.T) { 25 cdc := simapp.MakeTestEncodingConfig().Marshaler 26 dec := simulation.NewDecodeStore(cdc) 27 28 endTime := time.Now().UTC() 29 content := types.ContentFromProposalType("test", "test", types.ProposalTypeText) 30 proposalA, err := types.NewProposal(content, 1, endTime, endTime.Add(24*time.Hour)) 31 require.NoError(t, err) 32 proposalB, err := types.NewProposal(content, 2, endTime, endTime.Add(24*time.Hour)) 33 require.NoError(t, err) 34 35 proposalIDBz := make([]byte, 8) 36 binary.LittleEndian.PutUint64(proposalIDBz, 1) 37 deposit := types.NewDeposit(1, delAddr1, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.OneInt()))) 38 vote := types.NewVote(1, delAddr1, types.NewNonSplitVoteOption(types.OptionYes)) 39 40 proposalBzA, err := cdc.Marshal(&proposalA) 41 require.NoError(t, err) 42 proposalBzB, err := cdc.Marshal(&proposalB) 43 require.NoError(t, err) 44 45 tests := []struct { 46 name string 47 kvA, kvB kv.Pair 48 expectedLog string 49 wantPanic bool 50 }{ 51 { 52 "proposals", 53 kv.Pair{Key: types.ProposalKey(1), Value: proposalBzA}, 54 kv.Pair{Key: types.ProposalKey(2), Value: proposalBzB}, 55 fmt.Sprintf("%v\n%v", proposalA, proposalB), false, 56 }, 57 { 58 "proposal IDs", 59 kv.Pair{Key: types.InactiveProposalQueueKey(1, endTime), Value: proposalIDBz}, 60 kv.Pair{Key: types.InactiveProposalQueueKey(1, endTime), Value: proposalIDBz}, 61 "proposalIDA: 1\nProposalIDB: 1", false, 62 }, 63 { 64 "deposits", 65 kv.Pair{Key: types.DepositKey(1, delAddr1), Value: cdc.MustMarshal(&deposit)}, 66 kv.Pair{Key: types.DepositKey(1, delAddr1), Value: cdc.MustMarshal(&deposit)}, 67 fmt.Sprintf("%v\n%v", deposit, deposit), false, 68 }, 69 { 70 "votes", 71 kv.Pair{Key: types.VoteKey(1, delAddr1), Value: cdc.MustMarshal(&vote)}, 72 kv.Pair{Key: types.VoteKey(1, delAddr1), Value: cdc.MustMarshal(&vote)}, 73 fmt.Sprintf("%v\n%v", vote, vote), false, 74 }, 75 { 76 "other", 77 kv.Pair{Key: []byte{0x99}, Value: []byte{0x99}}, 78 kv.Pair{Key: []byte{0x99}, Value: []byte{0x99}}, 79 "", true, 80 }, 81 } 82 83 for _, tt := range tests { 84 tt := tt 85 t.Run(tt.name, func(t *testing.T) { 86 if tt.wantPanic { 87 require.Panics(t, func() { dec(tt.kvA, tt.kvB) }, tt.name) 88 } else { 89 require.Equal(t, tt.expectedLog, dec(tt.kvA, tt.kvB), tt.name) 90 } 91 }) 92 } 93 }