github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/erc20/keeper/proposal_test.go (about)

     1  package keeper_test
     2  
     3  import (
     4  	"math/big"
     5  	"time"
     6  
     7  	ethcmn "github.com/ethereum/go-ethereum/common"
     8  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     9  	"github.com/fibonacci-chain/fbc/x/erc20/types"
    10  	govtypes "github.com/fibonacci-chain/fbc/x/gov/types"
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func (suite *KeeperTestSuite) TestProposal_TokenMappingProposal() {
    15  	denom1 := "testdenom1"
    16  	externalContract := ethcmn.BigToAddress(big.NewInt(2))
    17  	addr1 := ethcmn.BytesToAddress([]byte{0x0}).Bytes()
    18  
    19  	proposal := types.NewTokenMappingProposal(
    20  		"default title",
    21  		"default description",
    22  		denom1,
    23  		&externalContract,
    24  	)
    25  
    26  	minDeposit := suite.app.Erc20Keeper.GetMinDeposit(suite.ctx, proposal)
    27  	require.Equal(suite.T(), sdk.SysCoins{sdk.NewDecCoin(sdk.DefaultBondDenom, sdk.NewInt(100))}, minDeposit)
    28  
    29  	maxDepositPeriod := suite.app.Erc20Keeper.GetMaxDepositPeriod(suite.ctx, proposal)
    30  	require.Equal(suite.T(), time.Hour*24, maxDepositPeriod)
    31  
    32  	votingPeriod := suite.app.Erc20Keeper.GetVotingPeriod(suite.ctx, proposal)
    33  	require.Equal(suite.T(), time.Hour*72, votingPeriod)
    34  
    35  	testCases := []struct {
    36  		msg     string
    37  		prepare func()
    38  	}{
    39  		{
    40  			"pass check",
    41  			func() {},
    42  		},
    43  	}
    44  
    45  	for _, tc := range testCases {
    46  		suite.Run(tc.msg, func() {
    47  			//suite.SetupTest()
    48  			tc.prepare()
    49  
    50  			msg := govtypes.NewMsgSubmitProposal(proposal, minDeposit, addr1)
    51  			err := suite.app.Erc20Keeper.CheckMsgSubmitProposal(suite.ctx, msg)
    52  			suite.Require().NoError(err)
    53  		})
    54  	}
    55  }
    56  
    57  func (suite *KeeperTestSuite) TestProposal_ProxyContractRedirect() {
    58  	denom1 := "testdenom1"
    59  	externalContract := ethcmn.BigToAddress(big.NewInt(2))
    60  	addr1 := ethcmn.BytesToAddress([]byte{0x0}).Bytes()
    61  
    62  	proposal := types.NewProxyContractRedirectProposal(
    63  		"default title",
    64  		"default description",
    65  		denom1,
    66  		0,
    67  		&externalContract,
    68  	)
    69  
    70  	minDeposit := suite.app.Erc20Keeper.GetMinDeposit(suite.ctx, proposal)
    71  	require.Equal(suite.T(), sdk.SysCoins{sdk.NewDecCoin(sdk.DefaultBondDenom, sdk.NewInt(100))}, minDeposit)
    72  
    73  	maxDepositPeriod := suite.app.Erc20Keeper.GetMaxDepositPeriod(suite.ctx, proposal)
    74  	require.Equal(suite.T(), time.Hour*24, maxDepositPeriod)
    75  
    76  	votingPeriod := suite.app.Erc20Keeper.GetVotingPeriod(suite.ctx, proposal)
    77  	require.Equal(suite.T(), time.Hour*72, votingPeriod)
    78  
    79  	testCases := []struct {
    80  		msg     string
    81  		prepare func()
    82  	}{
    83  		{
    84  			"pass check",
    85  			func() {},
    86  		},
    87  	}
    88  
    89  	for _, tc := range testCases {
    90  		suite.Run(tc.msg, func() {
    91  			//suite.SetupTest()
    92  			tc.prepare()
    93  
    94  			msg := govtypes.NewMsgSubmitProposal(proposal, minDeposit, addr1)
    95  			err := suite.app.Erc20Keeper.CheckMsgSubmitProposal(suite.ctx, msg)
    96  			suite.Require().NoError(err)
    97  		})
    98  	}
    99  }
   100  
   101  func (suite *KeeperTestSuite) TestProposal_ContractTemplateProposal() {
   102  	addr1 := ethcmn.BytesToAddress([]byte{0x0}).Bytes()
   103  	proposal := types.NewContractTemplateProposal(
   104  		"default title",
   105  		"default description",
   106  		types.ProposalTypeContextTemplateImpl,
   107  		"empty",
   108  	)
   109  
   110  	minDeposit := suite.app.Erc20Keeper.GetMinDeposit(suite.ctx, proposal)
   111  	require.Equal(suite.T(), sdk.SysCoins{sdk.NewDecCoin(sdk.DefaultBondDenom, sdk.NewInt(100))}, minDeposit)
   112  
   113  	maxDepositPeriod := suite.app.Erc20Keeper.GetMaxDepositPeriod(suite.ctx, proposal)
   114  	require.Equal(suite.T(), time.Hour*24, maxDepositPeriod)
   115  
   116  	votingPeriod := suite.app.Erc20Keeper.GetVotingPeriod(suite.ctx, proposal)
   117  	require.Equal(suite.T(), time.Hour*72, votingPeriod)
   118  
   119  	testCases := []struct {
   120  		msg     string
   121  		prepare func()
   122  	}{
   123  		{
   124  			"pass check",
   125  			func() {},
   126  		},
   127  	}
   128  
   129  	for _, tc := range testCases {
   130  		suite.Run(tc.msg, func() {
   131  			//suite.SetupTest()
   132  			tc.prepare()
   133  
   134  			msg := govtypes.NewMsgSubmitProposal(proposal, minDeposit, addr1)
   135  			err := suite.app.Erc20Keeper.CheckMsgSubmitProposal(suite.ctx, msg)
   136  			suite.Require().NoError(err)
   137  		})
   138  	}
   139  }