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  }