github.com/Finschia/finschia-sdk@v0.49.1/x/fswap/keeper/genesis_test.go (about)

     1  package keeper_test
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  	tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
     9  
    10  	"github.com/Finschia/finschia-sdk/simapp"
    11  	"github.com/Finschia/finschia-sdk/testutil/testdata"
    12  	sdk "github.com/Finschia/finschia-sdk/types"
    13  	"github.com/Finschia/finschia-sdk/x/fswap/types"
    14  )
    15  
    16  func (s *KeeperTestSuite) TestInitAndExportGenesis() {
    17  	ctx, _ := s.ctx.CacheContext()
    18  	testGenesis := stubGenesisState()
    19  	err := s.keeper.InitGenesis(ctx, testGenesis)
    20  	s.Require().NoError(err)
    21  
    22  	exportGenesis := s.keeper.ExportGenesis(ctx)
    23  	fmt.Println(len(exportGenesis.GetSwaps()))
    24  	s.Require().Equal(testGenesis, exportGenesis)
    25  	s.Require().Equal(testGenesis.GetSwaps(), exportGenesis.GetSwaps())
    26  	s.Require().Equal(testGenesis.GetSwapStats(), exportGenesis.GetSwapStats())
    27  	s.Require().Equal(testGenesis.GetSwappeds(), exportGenesis.GetSwappeds())
    28  }
    29  
    30  func TestInitGenesis(t *testing.T) {
    31  	checkTx := false
    32  	app := simapp.Setup(checkTx)
    33  	testdata.RegisterInterfaces(app.InterfaceRegistry())
    34  	testdata.RegisterMsgServer(app.MsgServiceRouter(), testdata.MsgServerImpl{})
    35  	ctx := app.BaseApp.NewContext(checkTx, tmproto.Header{})
    36  	keeper := app.FswapKeeper
    37  
    38  	tests := []struct {
    39  		name          string
    40  		genState      *types.GenesisState
    41  		expectedError error
    42  	}{
    43  		{
    44  			name:          "valid",
    45  			genState:      stubGenesisState(),
    46  			expectedError: nil,
    47  		},
    48  		{
    49  			name: "invalid: swapCount",
    50  			genState: func() *types.GenesisState {
    51  				state := stubGenesisState()
    52  				state.SwapStats.SwapCount = -1
    53  				return state
    54  			}(),
    55  			expectedError: types.ErrInvalidState,
    56  		},
    57  		{
    58  			name: "invalid: swaps count exceeds limit",
    59  			genState: func() *types.GenesisState {
    60  				state := stubGenesisState()
    61  				state.Swaps = append(state.Swaps, state.Swaps[0])
    62  				state.Swappeds = append(state.Swappeds, state.Swappeds[0])
    63  				state.SwapStats.SwapCount = 2
    64  				return state
    65  			}(),
    66  			expectedError: types.ErrCanNotHaveMoreSwap,
    67  		},
    68  	}
    69  	for _, tc := range tests {
    70  		t.Run(tc.name, func(t *testing.T) {
    71  			err := keeper.InitGenesis(ctx, tc.genState)
    72  			require.ErrorIs(t, tc.expectedError, err)
    73  		})
    74  	}
    75  }
    76  
    77  func stubGenesisState() *types.GenesisState {
    78  	testSwapRate, _ := sdk.NewDecFromStr("1234567890")
    79  	return &types.GenesisState{
    80  		Swaps: []types.Swap{
    81  			{
    82  				FromDenom:           "aaa",
    83  				ToDenom:             "bbb",
    84  				AmountCapForToDenom: sdk.NewInt(1234567890000),
    85  				SwapRate:            testSwapRate,
    86  			},
    87  		},
    88  		SwapStats: types.SwapStats{
    89  			SwapCount: 1,
    90  		},
    91  		Swappeds: []types.Swapped{
    92  			{
    93  				FromCoinAmount: sdk.Coin{
    94  					Denom:  "aaa",
    95  					Amount: sdk.ZeroInt(),
    96  				},
    97  				ToCoinAmount: sdk.Coin{
    98  					Denom:  "bbb",
    99  					Amount: sdk.ZeroInt(),
   100  				},
   101  			},
   102  		},
   103  	}
   104  }