github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/dex/keeper/querier_test.go (about) 1 //go:build ignore 2 3 package keeper 4 5 import ( 6 "testing" 7 "time" 8 9 "github.com/fibonacci-chain/fbc/x/common" 10 11 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 12 abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types" 13 "github.com/fibonacci-chain/fbc/x/dex/types" 14 "github.com/stretchr/testify/require" 15 amino "github.com/tendermint/go-amino" 16 ) 17 18 func TestQuerier_ProductsAndMatchOrder(t *testing.T) { 19 20 common.InitConfig() 21 testInput := createTestInputWithBalance(t, 1, 10000) 22 ctx := testInput.Ctx 23 addr, err := sdk.AccAddressFromBech32(types.TestTokenPairOwner) 24 require.Nil(t, err) 25 tokenPair0 := &types.TokenPair{ 26 BaseAssetSymbol: "bToken0", 27 QuoteAssetSymbol: common.NativeToken, 28 Owner: addr, 29 Deposits: sdk.NewDecCoin(sdk.DefaultBondDenom, sdk.NewInt(50)), 30 BlockHeight: 8, 31 } 32 33 tokenPair1 := &types.TokenPair{ 34 BaseAssetSymbol: "bToken1", 35 QuoteAssetSymbol: common.NativeToken, 36 Owner: addr, 37 Deposits: sdk.NewDecCoin(sdk.DefaultBondDenom, sdk.NewInt(100)), 38 BlockHeight: 10, 39 } 40 41 // SaveTokenPair 42 err = testInput.DexKeeper.SaveTokenPair(ctx, tokenPair0) 43 require.Nil(t, err) 44 err = testInput.DexKeeper.SaveTokenPair(ctx, tokenPair1) 45 require.Nil(t, err) 46 querier := NewQuerier(testInput.DexKeeper) 47 48 var normalPath = []string{types.QueryProducts, types.QueryMatchOrder} 49 50 for _, path := range normalPath { 51 // successful case 52 queryParams := types.NewQueryDexInfoParams(types.TestTokenPairOwner, 1, 50) 53 bz, err := amino.MarshalJSON(queryParams) 54 require.Nil(t, err) 55 data, err := querier(ctx, []string{path}, abci.RequestQuery{Data: bz}) 56 require.Nil(t, err) 57 require.True(t, data != nil) 58 59 // error case : failed to query data because param is nil 60 dataUnmarshalJSON, err := querier(ctx, []string{path}, abci.RequestQuery{Data: nil}) 61 require.Error(t, err) 62 require.True(t, dataUnmarshalJSON == nil) 63 64 // successful case : query data while page limit is out range of data amount 65 queryParams = types.NewQueryDexInfoParams(types.TestTokenPairOwner, 2, 50) 66 bz, err = amino.MarshalJSON(queryParams) 67 require.Nil(t, err) 68 data, err = querier(ctx, []string{path}, abci.RequestQuery{Data: bz}) 69 require.Nil(t, err) 70 require.True(t, data != nil) 71 72 // successful case : query data while page limit is in range of data amount 73 queryParams = types.NewQueryDexInfoParams(types.TestTokenPairOwner, 1, 1) 74 bz, err = amino.MarshalJSON(queryParams) 75 require.Nil(t, err) 76 data, err = querier(ctx, []string{path}, abci.RequestQuery{Data: bz}) 77 require.Nil(t, err) 78 require.True(t, data != nil) 79 80 } 81 82 // error case : failed to query because query path is wrong 83 queryParams := types.NewQueryDexInfoParams(types.TestTokenPairOwner, 1, 50) 84 bz, err := amino.MarshalJSON(queryParams) 85 require.Nil(t, err) 86 dataOther, err := querier(ctx, []string{"others"}, abci.RequestQuery{Data: bz}) 87 require.NotNil(t, err) 88 require.True(t, dataOther == nil) 89 90 } 91 92 func TestQuerier_Deposits(t *testing.T) { 93 testInput := createTestInputWithBalance(t, 1, 10000) 94 ctx := testInput.Ctx 95 addr, err := sdk.AccAddressFromBech32(types.TestTokenPairOwner) 96 require.Nil(t, err) 97 tokenPair0 := &types.TokenPair{ 98 BaseAssetSymbol: "bToken0", 99 QuoteAssetSymbol: common.NativeToken, 100 Owner: addr, 101 Deposits: sdk.NewDecCoin(sdk.DefaultBondDenom, sdk.NewInt(50)), 102 BlockHeight: 8, 103 } 104 105 tokenPair1 := &types.TokenPair{ 106 BaseAssetSymbol: "bToken1", 107 QuoteAssetSymbol: common.NativeToken, 108 Owner: addr, 109 Deposits: sdk.NewDecCoin(sdk.DefaultBondDenom, sdk.NewInt(100)), 110 BlockHeight: 10, 111 } 112 113 // SaveTokenPair 114 err = testInput.DexKeeper.SaveTokenPair(ctx, tokenPair0) 115 require.Nil(t, err) 116 err = testInput.DexKeeper.SaveTokenPair(ctx, tokenPair1) 117 require.Nil(t, err) 118 querier := NewQuerier(testInput.DexKeeper) 119 path := types.QueryDeposits 120 // successful case 121 queryParams := types.NewQueryDepositParams(types.TestTokenPairOwner, "", common.NativeToken, 1, 50) 122 bz, err := amino.MarshalJSON(queryParams) 123 require.Nil(t, err) 124 data, err := querier(ctx, []string{path}, abci.RequestQuery{Data: bz}) 125 require.Nil(t, err) 126 require.True(t, data != nil) 127 128 // error case : failed to query data because param is nil 129 dataUnmarshalJSON, err := querier(ctx, []string{path}, abci.RequestQuery{Data: nil}) 130 require.Error(t, err) 131 require.True(t, dataUnmarshalJSON == nil) 132 133 // successful case : query data while page limit is out range of data amount 134 queryParams = types.NewQueryDepositParams(types.TestTokenPairOwner, "", "", 2, 50) 135 bz, err = amino.MarshalJSON(queryParams) 136 require.Nil(t, err) 137 data, err = querier(ctx, []string{path}, abci.RequestQuery{Data: bz}) 138 require.Nil(t, err) 139 require.True(t, data != nil) 140 141 // successful case : query data while page limit is in range of data amount 142 queryParams = types.NewQueryDepositParams(types.TestTokenPairOwner, "", "", 1, 1) 143 bz, err = amino.MarshalJSON(queryParams) 144 require.Nil(t, err) 145 data, err = querier(ctx, []string{path}, abci.RequestQuery{Data: bz}) 146 require.Nil(t, err) 147 require.True(t, data != nil) 148 } 149 150 func TestQuerier_QueryParams(t *testing.T) { 151 152 testInput := createTestInputWithBalance(t, 1, 10000) 153 ctx := testInput.Ctx 154 155 p := types.DefaultParams() 156 p.DelistMaxDepositPeriod = time.Second * 123 157 testInput.DexKeeper.SetParams(ctx, *p) 158 querier := NewQuerier(testInput.DexKeeper) 159 res, err := querier(ctx, []string{"params"}, abci.RequestQuery{}) 160 161 require.True(t, len(res) > 0) 162 require.True(t, err == nil) 163 164 } 165 166 func TestQuerier_QueryProductsDelisting(t *testing.T) { 167 168 testInput := createTestInputWithBalance(t, 1, 10000) 169 ctx := testInput.Ctx 170 171 querier := NewQuerier(testInput.DexKeeper) 172 173 tokenPair := GetBuiltInTokenPair() 174 tokenPair.Delisting = true 175 176 err := testInput.DexKeeper.SaveTokenPair(ctx, tokenPair) 177 require.Nil(t, err) 178 179 res, err := querier(ctx, []string{types.QueryProductsDelisting}, abci.RequestQuery{}) 180 require.True(t, len(res) > 0) 181 require.Nil(t, err) 182 183 } 184 185 func TestQueryParam(t *testing.T) { 186 // NewQueryDexInfoParams 187 tests := []struct { 188 name string 189 owner string 190 page int 191 perPage int 192 result bool 193 }{ 194 {"new-no-owner", "", 1, 50, true}, 195 {"new-with-owner", types.TestTokenPairOwner, 1, 50, true}, 196 {"new-wrong-address", "wrong-address", 1, 50, false}, 197 {"new-wrong-page", "", 0, 50, false}, 198 {"new-wrong-per-page", "", 1, 0, false}, 199 } 200 for _, tt := range tests { 201 t.Run(tt.name, func(t *testing.T) { 202 params := types.NewQueryDexInfoParams(tt.owner, tt.page, tt.perPage) 203 if tt.result { 204 require.NotNil(t, params) 205 } else { 206 require.NotNil(t, params) 207 } 208 }) 209 } 210 }