2019-08-14 14:10:48 -07:00
|
|
|
package keeper_test
|
2019-07-01 04:32:04 -07:00
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
abci "github.com/tendermint/tendermint/abci/types"
|
|
|
|
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
2019-08-14 14:10:48 -07:00
|
|
|
keep "github.com/cosmos/cosmos-sdk/x/supply/internal/keeper"
|
2019-07-02 09:24:13 -07:00
|
|
|
"github.com/cosmos/cosmos-sdk/x/supply/internal/types"
|
2019-07-01 04:32:04 -07:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestNewQuerier(t *testing.T) {
|
2019-08-14 14:10:48 -07:00
|
|
|
app, ctx := createTestApp(false)
|
|
|
|
keeper := app.SupplyKeeper
|
|
|
|
cdc := app.Codec()
|
2019-07-01 04:32:04 -07:00
|
|
|
|
|
|
|
supplyCoins := sdk.NewCoins(
|
|
|
|
sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100)),
|
|
|
|
sdk.NewCoin("photon", sdk.NewInt(50)),
|
|
|
|
sdk.NewCoin("atom", sdk.NewInt(2000)),
|
|
|
|
sdk.NewCoin("btc", sdk.NewInt(21000000)),
|
|
|
|
)
|
|
|
|
|
|
|
|
keeper.SetSupply(ctx, types.NewSupply(supplyCoins))
|
|
|
|
|
|
|
|
query := abci.RequestQuery{
|
|
|
|
Path: "",
|
|
|
|
Data: []byte{},
|
|
|
|
}
|
|
|
|
|
2019-08-14 14:10:48 -07:00
|
|
|
querier := keep.NewQuerier(keeper)
|
2019-07-01 04:32:04 -07:00
|
|
|
|
|
|
|
bz, err := querier(ctx, []string{"other"}, query)
|
|
|
|
require.Error(t, err)
|
|
|
|
require.Nil(t, bz)
|
|
|
|
|
|
|
|
queryTotalSupplyParams := types.NewQueryTotalSupplyParams(1, 20)
|
2019-08-14 14:10:48 -07:00
|
|
|
bz, errRes := cdc.MarshalJSON(queryTotalSupplyParams)
|
2019-07-01 04:32:04 -07:00
|
|
|
require.Nil(t, errRes)
|
|
|
|
|
|
|
|
query.Path = fmt.Sprintf("/custom/supply/%s", types.QueryTotalSupply)
|
|
|
|
query.Data = bz
|
|
|
|
|
|
|
|
_, err = querier(ctx, []string{types.QueryTotalSupply}, query)
|
|
|
|
require.Nil(t, err)
|
|
|
|
|
|
|
|
querySupplyParams := types.NewQuerySupplyOfParams(sdk.DefaultBondDenom)
|
2019-08-14 14:10:48 -07:00
|
|
|
bz, errRes = cdc.MarshalJSON(querySupplyParams)
|
2019-07-01 04:32:04 -07:00
|
|
|
require.Nil(t, errRes)
|
|
|
|
|
|
|
|
query.Path = fmt.Sprintf("/custom/supply/%s", types.QuerySupplyOf)
|
|
|
|
query.Data = bz
|
|
|
|
|
|
|
|
_, err = querier(ctx, []string{types.QuerySupplyOf}, query)
|
|
|
|
require.Nil(t, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestQuerySupply(t *testing.T) {
|
2019-08-14 14:10:48 -07:00
|
|
|
app, ctx := createTestApp(false)
|
|
|
|
keeper := app.SupplyKeeper
|
|
|
|
cdc := app.Codec()
|
2019-07-01 04:32:04 -07:00
|
|
|
|
|
|
|
supplyCoins := sdk.NewCoins(
|
|
|
|
sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100)),
|
|
|
|
sdk.NewCoin("photon", sdk.NewInt(50)),
|
|
|
|
sdk.NewCoin("atom", sdk.NewInt(2000)),
|
|
|
|
sdk.NewCoin("btc", sdk.NewInt(21000000)),
|
|
|
|
)
|
|
|
|
|
2019-08-14 14:10:48 -07:00
|
|
|
querier := keep.NewQuerier(keeper)
|
|
|
|
|
2019-07-01 04:32:04 -07:00
|
|
|
keeper.SetSupply(ctx, types.NewSupply(supplyCoins))
|
|
|
|
|
|
|
|
queryTotalSupplyParams := types.NewQueryTotalSupplyParams(1, 10)
|
2019-08-14 14:10:48 -07:00
|
|
|
bz, errRes := cdc.MarshalJSON(queryTotalSupplyParams)
|
2019-07-01 04:32:04 -07:00
|
|
|
require.Nil(t, errRes)
|
|
|
|
|
|
|
|
query := abci.RequestQuery{
|
|
|
|
Path: "",
|
|
|
|
Data: []byte{},
|
|
|
|
}
|
|
|
|
|
|
|
|
query.Path = fmt.Sprintf("/custom/supply/%s", types.QueryTotalSupply)
|
|
|
|
query.Data = bz
|
|
|
|
|
2019-08-14 14:10:48 -07:00
|
|
|
res, err := querier(ctx, []string{types.QueryTotalSupply}, query)
|
2019-07-01 04:32:04 -07:00
|
|
|
require.Nil(t, err)
|
|
|
|
|
|
|
|
var totalCoins sdk.Coins
|
2019-08-14 14:10:48 -07:00
|
|
|
errRes = cdc.UnmarshalJSON(res, &totalCoins)
|
2019-07-01 04:32:04 -07:00
|
|
|
require.Nil(t, errRes)
|
|
|
|
require.Equal(t, supplyCoins, totalCoins)
|
|
|
|
|
|
|
|
querySupplyParams := types.NewQuerySupplyOfParams(sdk.DefaultBondDenom)
|
2019-08-14 14:10:48 -07:00
|
|
|
bz, errRes = cdc.MarshalJSON(querySupplyParams)
|
2019-07-01 04:32:04 -07:00
|
|
|
require.Nil(t, errRes)
|
|
|
|
|
|
|
|
query.Path = fmt.Sprintf("/custom/supply/%s", types.QuerySupplyOf)
|
|
|
|
query.Data = bz
|
|
|
|
|
2019-08-14 14:10:48 -07:00
|
|
|
res, err = querier(ctx, []string{types.QuerySupplyOf}, query)
|
2019-07-01 04:32:04 -07:00
|
|
|
require.Nil(t, err)
|
|
|
|
|
|
|
|
var supply sdk.Int
|
|
|
|
errRes = supply.UnmarshalJSON(res)
|
|
|
|
require.Nil(t, errRes)
|
|
|
|
require.True(sdk.IntEq(t, sdk.NewInt(100), supply))
|
|
|
|
|
|
|
|
}
|