From 83969f3702c3ee161e650d73a038e04cc0abc7ad Mon Sep 17 00:00:00 2001 From: rhuairahrighairigh Date: Fri, 6 Dec 2019 23:53:20 +0000 Subject: [PATCH] update pricefeed tests --- x/pricefeed/genesis.go | 5 +- x/pricefeed/keeper/keeper_test.go | 108 ++++++++++++++---------------- x/pricefeed/keeper/test_common.go | 46 ------------- 3 files changed, 55 insertions(+), 104 deletions(-) delete mode 100644 x/pricefeed/keeper/test_common.go diff --git a/x/pricefeed/genesis.go b/x/pricefeed/genesis.go index 3bf16251..b80fe9a5 100644 --- a/x/pricefeed/genesis.go +++ b/x/pricefeed/genesis.go @@ -21,7 +21,10 @@ func InitGenesis(ctx sdk.Context, keeper Keeper, data GenesisState) { // Set the current price (if any) based on what's now in the store for _, a := range data.Params.Markets { if a.Active { - _ = keeper.SetCurrentPrices(ctx, a.MarketID) + err := keeper.SetCurrentPrices(ctx, a.MarketID) + if err != nil { + panic(err) + } } } } diff --git a/x/pricefeed/keeper/keeper_test.go b/x/pricefeed/keeper/keeper_test.go index 105062bb..7c06172b 100644 --- a/x/pricefeed/keeper/keeper_test.go +++ b/x/pricefeed/keeper/keeper_test.go @@ -1,4 +1,4 @@ -package keeper +package keeper_test import ( "testing" @@ -7,31 +7,28 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" abci "github.com/tendermint/tendermint/abci/types" - tmtime "github.com/tendermint/tendermint/types/time" + "github.com/kava-labs/kava/app" "github.com/kava-labs/kava/x/pricefeed/types" ) // TestKeeper_SetGetMarket tests adding markets to the pricefeed, getting markets from the store func TestKeeper_SetGetMarket(t *testing.T) { - helper := getMockApp(t, 0, types.GenesisState{}, nil) - header := abci.Header{ - Height: helper.mApp.LastBlockHeight() + 1, - Time: tmtime.Now()} - helper.mApp.BeginBlock(abci.RequestBeginBlock{Header: header}) - ctx := helper.mApp.BaseApp.NewContext(false, header) + tApp := app.NewTestApp() + ctx := tApp.NewContext(true, abci.Header{}) + keeper := tApp.GetPriceFeedKeeper() mp := types.Params{ Markets: types.Markets{ types.Market{MarketID: "tstusd", BaseAsset: "tst", QuoteAsset: "usd", Oracles: types.Oracles{}, Active: true}, }, } - helper.keeper.SetParams(ctx, mp) - markets := helper.keeper.GetMarketParams(ctx) + keeper.SetParams(ctx, mp) + markets := keeper.GetMarketParams(ctx) require.Equal(t, len(markets), 1) require.Equal(t, markets[0].MarketID, "tstusd") - _, found := helper.keeper.GetMarket(ctx, "tstusd") + _, found := keeper.GetMarket(ctx, "tstusd") require.Equal(t, found, true) mp = types.Params{ @@ -40,102 +37,99 @@ func TestKeeper_SetGetMarket(t *testing.T) { types.Market{MarketID: "tst2usd", BaseAsset: "tst2", QuoteAsset: "usd", Oracles: types.Oracles{}, Active: true}, }, } - helper.keeper.SetParams(ctx, mp) - markets = helper.keeper.GetMarketParams(ctx) + keeper.SetParams(ctx, mp) + markets = keeper.GetMarketParams(ctx) require.Equal(t, len(markets), 2) require.Equal(t, markets[0].MarketID, "tstusd") require.Equal(t, markets[1].MarketID, "tst2usd") - _, found = helper.keeper.GetMarket(ctx, "nan") + _, found = keeper.GetMarket(ctx, "nan") require.Equal(t, found, false) } // TestKeeper_GetSetPrice Test Posting the price by an oracle func TestKeeper_GetSetPrice(t *testing.T) { - helper := getMockApp(t, 2, types.GenesisState{}, nil) - header := abci.Header{ - Height: helper.mApp.LastBlockHeight() + 1, - Time: tmtime.Now()} - helper.mApp.BeginBlock(abci.RequestBeginBlock{Header: header}) - ctx := helper.mApp.BaseApp.NewContext(false, header) + _, addrs := app.GeneratePrivKeyAddressPairs(2) + tApp := app.NewTestApp() + ctx := tApp.NewContext(true, abci.Header{}) + keeper := tApp.GetPriceFeedKeeper() + mp := types.Params{ Markets: types.Markets{ types.Market{MarketID: "tstusd", BaseAsset: "tst", QuoteAsset: "usd", Oracles: types.Oracles{}, Active: true}, }, } - helper.keeper.SetParams(ctx, mp) + keeper.SetParams(ctx, mp) // Set price by oracle 1 - _, err := helper.keeper.SetPrice( - ctx, helper.addrs[0], "tstusd", + _, err := keeper.SetPrice( + ctx, addrs[0], "tstusd", sdk.MustNewDecFromStr("0.33"), - header.Time.Add(1*time.Hour)) + time.Now().Add(1*time.Hour)) require.NoError(t, err) // Get raw prices - rawPrices := helper.keeper.GetRawPrices(ctx, "tstusd") + rawPrices := keeper.GetRawPrices(ctx, "tstusd") require.Equal(t, len(rawPrices), 1) require.Equal(t, rawPrices[0].Price.Equal(sdk.MustNewDecFromStr("0.33")), true) // Set price by oracle 2 - _, err = helper.keeper.SetPrice( - ctx, helper.addrs[1], "tstusd", + _, err = keeper.SetPrice( + ctx, addrs[1], "tstusd", sdk.MustNewDecFromStr("0.35"), - header.Time.Add(time.Hour*1)) + time.Now().Add(time.Hour*1)) require.NoError(t, err) - rawPrices = helper.keeper.GetRawPrices(ctx, "tstusd") + rawPrices = keeper.GetRawPrices(ctx, "tstusd") require.Equal(t, len(rawPrices), 2) require.Equal(t, rawPrices[1].Price.Equal(sdk.MustNewDecFromStr("0.35")), true) // Update Price by Oracle 1 - _, err = helper.keeper.SetPrice( - ctx, helper.addrs[0], "tstusd", + _, err = keeper.SetPrice( + ctx, addrs[0], "tstusd", sdk.MustNewDecFromStr("0.37"), - header.Time.Add(time.Hour*1)) + time.Now().Add(time.Hour*1)) require.NoError(t, err) - rawPrices = helper.keeper.GetRawPrices(ctx, "tstusd") + rawPrices = keeper.GetRawPrices(ctx, "tstusd") require.Equal(t, rawPrices[0].Price.Equal(sdk.MustNewDecFromStr("0.37")), true) } // TestKeeper_GetSetCurrentPrice Test Setting the median price of an Asset func TestKeeper_GetSetCurrentPrice(t *testing.T) { - helper := getMockApp(t, 4, types.GenesisState{}, nil) - header := abci.Header{ - Height: helper.mApp.LastBlockHeight() + 1, - Time: tmtime.Now()} - helper.mApp.BeginBlock(abci.RequestBeginBlock{Header: header}) - ctx := helper.mApp.BaseApp.NewContext(false, header) + _, addrs := app.GeneratePrivKeyAddressPairs(4) + tApp := app.NewTestApp() + ctx := tApp.NewContext(true, abci.Header{}) + keeper := tApp.GetPriceFeedKeeper() + mp := types.Params{ Markets: types.Markets{ types.Market{MarketID: "tstusd", BaseAsset: "tst", QuoteAsset: "usd", Oracles: types.Oracles{}, Active: true}, }, } - helper.keeper.SetParams(ctx, mp) - helper.keeper.SetPrice( - ctx, helper.addrs[0], "tstusd", + keeper.SetParams(ctx, mp) + keeper.SetPrice( + ctx, addrs[0], "tstusd", sdk.MustNewDecFromStr("0.33"), - header.Time.Add(time.Hour*1)) - helper.keeper.SetPrice( - ctx, helper.addrs[1], "tstusd", + time.Now().Add(time.Hour*1)) + keeper.SetPrice( + ctx, addrs[1], "tstusd", sdk.MustNewDecFromStr("0.35"), - header.Time.Add(time.Hour*1)) - helper.keeper.SetPrice( - ctx, helper.addrs[2], "tstusd", + time.Now().Add(time.Hour*1)) + keeper.SetPrice( + ctx, addrs[2], "tstusd", sdk.MustNewDecFromStr("0.34"), - header.Time.Add(time.Hour*1)) + time.Now().Add(time.Hour*1)) // Set current price - err := helper.keeper.SetCurrentPrices(ctx, "tstusd") + err := keeper.SetCurrentPrices(ctx, "tstusd") require.NoError(t, err) // Get Current price - price := helper.keeper.GetCurrentPrice(ctx, "tstusd") + price := keeper.GetCurrentPrice(ctx, "tstusd") require.Equal(t, price.Price.Equal(sdk.MustNewDecFromStr("0.34")), true) // Even number of oracles - helper.keeper.SetPrice( - ctx, helper.addrs[3], "tstusd", + keeper.SetPrice( + ctx, addrs[3], "tstusd", sdk.MustNewDecFromStr("0.36"), - header.Time.Add(time.Hour*1)) - err = helper.keeper.SetCurrentPrices(ctx, "tstusd") + time.Now().Add(time.Hour*1)) + err = keeper.SetCurrentPrices(ctx, "tstusd") require.NoError(t, err) - price = helper.keeper.GetCurrentPrice(ctx, "tstusd") + price = keeper.GetCurrentPrice(ctx, "tstusd") require.Equal(t, price.Price.Equal(sdk.MustNewDecFromStr("0.345")), true) - } diff --git a/x/pricefeed/keeper/test_common.go b/x/pricefeed/keeper/test_common.go deleted file mode 100644 index 1f42c5ba..00000000 --- a/x/pricefeed/keeper/test_common.go +++ /dev/null @@ -1,46 +0,0 @@ -package keeper - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - authexported "github.com/cosmos/cosmos-sdk/x/auth/exported" - "github.com/cosmos/cosmos-sdk/x/mock" - "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/crypto" - - "github.com/kava-labs/kava/x/pricefeed/types" -) - -type testHelper struct { - mApp *mock.App - keeper Keeper - addrs []sdk.AccAddress - pubKeys []crypto.PubKey - privKeys []crypto.PrivKey -} - -func getMockApp(t *testing.T, numGenAccs int, genState types.GenesisState, genAccs []authexported.Account) testHelper { - mApp := mock.NewApp() - types.RegisterCodec(mApp.Cdc) - keyPricefeed := sdk.NewKVStoreKey(types.StoreKey) - pk := mApp.ParamsKeeper - keeper := NewKeeper(mApp.Cdc, keyPricefeed, pk.Subspace(types.DefaultParamspace), types.DefaultCodespace) - - require.NoError(t, mApp.CompleteSetup(keyPricefeed)) - - valTokens := sdk.TokensFromConsensusPower(42) - var ( - addrs []sdk.AccAddress - pubKeys []crypto.PubKey - privKeys []crypto.PrivKey - ) - - if genAccs == nil || len(genAccs) == 0 { - genAccs, addrs, pubKeys, privKeys = mock.CreateGenAccounts(numGenAccs, - sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, valTokens))) - } - - mock.SetGenesis(mApp, genAccs) - return testHelper{mApp, keeper, addrs, pubKeys, privKeys} -}