github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/distribution/genesis_test.go (about)

     1  package distribution
     2  
     3  import (
     4  	"testing"
     5  
     6  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     7  	"github.com/fibonacci-chain/fbc/x/distribution/keeper"
     8  	"github.com/fibonacci-chain/fbc/x/distribution/types"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  type testParam struct {
    13  	commission sdk.SysCoins
    14  }
    15  
    16  func getTestParams() []testParam {
    17  	return []testParam{
    18  		{keeper.NewTestSysCoins(1000, 0)},
    19  		{keeper.NewTestSysCoins(150, 2)},
    20  		{keeper.NewTestSysCoins(50, 8)},
    21  		{nil},
    22  	}
    23  }
    24  
    25  // InitGenesis sets distribution information for genesis
    26  func TestInitGenesis(t *testing.T) {
    27  	tests := getTestParams()
    28  	length := len(tests)
    29  	ctx, _, k, _, supplyKeeper := keeper.CreateTestInputDefault(t, false, 1000)
    30  
    31  	valOpAddrs, _, valConsAddrs := keeper.GetTestAddrs()
    32  	dwis := make([]DelegatorWithdrawInfo, length)
    33  	accs := make([]ValidatorAccumulatedCommissionRecord, length)
    34  	for i, valAddr := range valOpAddrs {
    35  		accs[i].ValidatorAddress = valAddr
    36  		accs[i].Accumulated = tests[i].commission
    37  		dwis[i].DelegatorAddress, dwis[i].WithdrawAddress = keeper.TestAddrs[i*2], keeper.TestAddrs[i*2+1]
    38  	}
    39  
    40  	genesisState := NewGenesisState(types.DefaultParams(), types.InitialFeePool(), dwis, valConsAddrs[0], accs)
    41  	InitGenesis(ctx, k, supplyKeeper, genesisState)
    42  	require.True(t, k.GetFeePoolCommunityCoins(ctx).IsZero())
    43  	require.Equal(t, genesisState.Params.CommunityTax, k.GetCommunityTax(ctx))
    44  	require.Equal(t, genesisState.Params.WithdrawAddrEnabled, k.GetWithdrawAddrEnabled(ctx))
    45  	require.Equal(t, genesisState.PreviousProposer, k.GetPreviousProposerConsAddr(ctx))
    46  	for i := range accs {
    47  		require.Equal(t, genesisState.DelegatorWithdrawInfos[i].WithdrawAddress,
    48  			k.GetDelegatorWithdrawAddr(ctx, dwis[i].DelegatorAddress))
    49  		require.Equal(t, genesisState.ValidatorAccumulatedCommissions[i].Accumulated,
    50  			k.GetValidatorAccumulatedCommission(ctx, accs[i].ValidatorAddress))
    51  		require.Equal(t, tests[i].commission,
    52  			k.GetValidatorAccumulatedCommission(ctx, accs[i].ValidatorAddress))
    53  	}
    54  
    55  	actualGenesis := ExportGenesis(ctx, k)
    56  	require.Equal(t, genesisState.Params.CommunityTax, actualGenesis.Params.CommunityTax)
    57  	require.Equal(t, genesisState.Params.WithdrawAddrEnabled, actualGenesis.Params.WithdrawAddrEnabled)
    58  	require.ElementsMatch(t, genesisState.DelegatorWithdrawInfos, actualGenesis.DelegatorWithdrawInfos)
    59  	require.Equal(t, genesisState.PreviousProposer, actualGenesis.PreviousProposer)
    60  	require.ElementsMatch(t, genesisState.ValidatorAccumulatedCommissions, actualGenesis.ValidatorAccumulatedCommissions)
    61  }