github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/supply/internal/keeper/querier_test.go (about)

     1  package keeper_test
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types"
     8  	"github.com/stretchr/testify/require"
     9  
    10  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
    11  	keep "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/supply/internal/keeper"
    12  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/supply/internal/types"
    13  )
    14  
    15  func TestNewQuerier(t *testing.T) {
    16  	app, ctx := createTestApp(false)
    17  	keeper := app.SupplyKeeper
    18  	cdc := app.Codec()
    19  
    20  	supplyCoins := sdk.NewCoins(
    21  		sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100)),
    22  		sdk.NewCoin("photon", sdk.NewInt(50)),
    23  		sdk.NewCoin("atom", sdk.NewInt(2000)),
    24  		sdk.NewCoin("btc", sdk.NewInt(21000000)),
    25  	)
    26  
    27  	keeper.SetSupply(ctx, types.NewSupply(supplyCoins))
    28  
    29  	query := abci.RequestQuery{
    30  		Path: "",
    31  		Data: []byte{},
    32  	}
    33  
    34  	querier := keep.NewQuerier(keeper)
    35  
    36  	bz, err := querier(ctx, []string{"other"}, query)
    37  	require.Error(t, err)
    38  	require.Nil(t, bz)
    39  
    40  	queryTotalSupplyParams := types.NewQueryTotalSupplyParams(1, 20)
    41  	bz, errRes := cdc.MarshalJSON(queryTotalSupplyParams)
    42  	require.Nil(t, errRes)
    43  
    44  	query.Path = fmt.Sprintf("/custom/supply/%s", types.QueryTotalSupply)
    45  	query.Data = bz
    46  
    47  	_, err = querier(ctx, []string{types.QueryTotalSupply}, query)
    48  	require.Nil(t, err)
    49  
    50  	querySupplyParams := types.NewQuerySupplyOfParams(sdk.DefaultBondDenom)
    51  	bz, errRes = cdc.MarshalJSON(querySupplyParams)
    52  	require.Nil(t, errRes)
    53  
    54  	query.Path = fmt.Sprintf("/custom/supply/%s", types.QuerySupplyOf)
    55  	query.Data = bz
    56  
    57  	_, err = querier(ctx, []string{types.QuerySupplyOf}, query)
    58  	require.Nil(t, err)
    59  }
    60  
    61  func TestQuerySupply(t *testing.T) {
    62  	app, ctx := createTestApp(false)
    63  	keeper := app.SupplyKeeper
    64  	cdc := app.Codec()
    65  
    66  	supplyCoins := sdk.NewCoins(
    67  		sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100)),
    68  		sdk.NewCoin("photon", sdk.NewInt(50)),
    69  		sdk.NewCoin("atom", sdk.NewInt(2000)),
    70  		sdk.NewCoin("btc", sdk.NewInt(21000000)),
    71  	)
    72  
    73  	querier := keep.NewQuerier(keeper)
    74  
    75  	keeper.SetSupply(ctx, types.NewSupply(supplyCoins))
    76  
    77  	queryTotalSupplyParams := types.NewQueryTotalSupplyParams(1, 10)
    78  	bz, errRes := cdc.MarshalJSON(queryTotalSupplyParams)
    79  	require.Nil(t, errRes)
    80  
    81  	query := abci.RequestQuery{
    82  		Path: "",
    83  		Data: []byte{},
    84  	}
    85  
    86  	query.Path = fmt.Sprintf("/custom/supply/%s", types.QueryTotalSupply)
    87  	query.Data = bz
    88  
    89  	res, err := querier(ctx, []string{types.QueryTotalSupply}, query)
    90  	require.Nil(t, err)
    91  
    92  	var totalCoins sdk.Coins
    93  	errRes = cdc.UnmarshalJSON(res, &totalCoins)
    94  	require.Nil(t, errRes)
    95  	require.Equal(t, supplyCoins, totalCoins)
    96  
    97  	querySupplyParams := types.NewQuerySupplyOfParams(sdk.DefaultBondDenom)
    98  	bz, errRes = cdc.MarshalJSON(querySupplyParams)
    99  	require.Nil(t, errRes)
   100  
   101  	query.Path = fmt.Sprintf("/custom/supply/%s", types.QuerySupplyOf)
   102  	query.Data = bz
   103  
   104  	res, err = querier(ctx, []string{types.QuerySupplyOf}, query)
   105  	require.Nil(t, err)
   106  
   107  	var supply sdk.Dec
   108  	errRes = supply.UnmarshalJSON(res)
   109  	require.Nil(t, errRes)
   110  	require.True(sdk.DecEq(t, sdk.NewDec(100), supply))
   111  
   112  }