github.com/cosmos/cosmos-sdk@v0.50.10/x/group/simulation/decoder_test.go (about) 1 package simulation_test 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 9 "github.com/cosmos/cosmos-sdk/testutil/testdata" 10 "github.com/cosmos/cosmos-sdk/types/kv" 11 moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" 12 "github.com/cosmos/cosmos-sdk/x/group" 13 "github.com/cosmos/cosmos-sdk/x/group/internal/orm" 14 "github.com/cosmos/cosmos-sdk/x/group/keeper" 15 "github.com/cosmos/cosmos-sdk/x/group/module" 16 "github.com/cosmos/cosmos-sdk/x/group/simulation" 17 ) 18 19 func TestDecodeStore(t *testing.T) { 20 encodingConfig := moduletestutil.MakeTestEncodingConfig(module.AppModuleBasic{}) 21 cdc := encodingConfig.Codec 22 dec := simulation.NewDecodeStore(cdc) 23 24 g := group.GroupInfo{Id: 1} 25 groupBz, err := cdc.Marshal(&g) 26 require.NoError(t, err) 27 28 _, _, addr := testdata.KeyTestPubAddr() 29 member := group.GroupMember{GroupId: 1, Member: &group.Member{ 30 Address: addr.String(), 31 }} 32 memberBz, err := cdc.Marshal(&member) 33 require.NoError(t, err) 34 35 _, _, accAddr := testdata.KeyTestPubAddr() 36 acc := group.GroupPolicyInfo{Address: accAddr.String()} 37 accBz, err := cdc.Marshal(&acc) 38 require.NoError(t, err) 39 40 proposal := group.Proposal{Id: 1} 41 proposalBz, err := cdc.Marshal(&proposal) 42 require.NoError(t, err) 43 44 vote := group.Vote{Voter: addr.String(), ProposalId: 1} 45 voteBz, err := cdc.Marshal(&vote) 46 require.NoError(t, err) 47 48 kvPairs := kv.Pairs{ 49 Pairs: []kv.Pair{ 50 {Key: append([]byte{keeper.GroupTablePrefix}, orm.PrimaryKey(&g)...), Value: groupBz}, 51 {Key: append([]byte{keeper.GroupMemberTablePrefix}, orm.PrimaryKey(&member)...), Value: memberBz}, 52 {Key: append([]byte{keeper.GroupPolicyTablePrefix}, orm.PrimaryKey(&acc)...), Value: accBz}, 53 {Key: append([]byte{keeper.ProposalTablePrefix}, orm.PrimaryKey(&proposal)...), Value: proposalBz}, 54 {Key: append([]byte{keeper.VoteTablePrefix}, orm.PrimaryKey(&vote)...), Value: voteBz}, 55 {Key: []byte{0x99}, Value: []byte{0x99}}, 56 }, 57 } 58 59 tests := []struct { 60 name string 61 expectErr bool 62 expectedLog string 63 }{ 64 {"Group", false, fmt.Sprintf("%v\n%v", g, g)}, 65 {"GroupMember", false, fmt.Sprintf("%v\n%v", member, member)}, 66 {"GroupPolicy", false, fmt.Sprintf("%v\n%v", acc, acc)}, 67 {"Proposal", false, fmt.Sprintf("%v\n%v", proposal, proposal)}, 68 {"Vote", false, fmt.Sprintf("%v\n%v", vote, vote)}, 69 {"other", true, ""}, 70 } 71 72 for i, tt := range tests { 73 i, tt := i, tt 74 t.Run(tt.name, func(t *testing.T) { 75 if tt.expectErr { 76 require.Panics(t, func() { dec(kvPairs.Pairs[i], kvPairs.Pairs[i]) }, tt.name) 77 } else { 78 require.Equal(t, tt.expectedLog, dec(kvPairs.Pairs[i], kvPairs.Pairs[i]), tt.name) 79 } 80 }) 81 } 82 }