package cdp_test import ( "strings" "testing" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/kava-labs/kava/app" "github.com/kava-labs/kava/x/cdp" abci "github.com/tendermint/tendermint/abci/types" tmtime "github.com/tendermint/tendermint/types/time" "github.com/stretchr/testify/suite" ) type HandlerTestSuite struct { suite.Suite ctx sdk.Context app app.TestApp handler sdk.Handler keeper cdp.Keeper } func (suite *HandlerTestSuite) SetupTest() { tApp := app.NewTestApp() ctx := tApp.NewContext(true, abci.Header{Height: 1, Time: tmtime.Now()}) tApp.InitializeFromGenesisStates( NewPricefeedGenStateMulti(), NewCDPGenStateMulti(), ) keeper := tApp.GetCDPKeeper() suite.handler = cdp.NewHandler(keeper) suite.app = tApp suite.keeper = keeper suite.ctx = ctx } func (suite *HandlerTestSuite) TestMsgCreateCdp() { _, addrs := app.GeneratePrivKeyAddressPairs(1) ak := suite.app.GetAccountKeeper() acc := ak.NewAccountWithAddress(suite.ctx, addrs[0]) acc.SetCoins(cs(c("xrp", 200000000), c("btc", 500000000))) ak.SetAccount(suite.ctx, acc) msg := cdp.NewMsgCreateCDP( addrs[0], cs(c("xrp", 200000000)), cs(c("usdx", 10000000)), ) res := suite.handler(suite.ctx, msg) suite.True(res.IsOK()) suite.Equal(cdp.GetCdpIDBytes(uint64(1)), res.Data) } func (suite *HandlerTestSuite) TestInvalidMsg() { res := suite.handler(suite.ctx, sdk.NewTestMsg()) suite.False(res.IsOK()) suite.True(strings.Contains(res.Log, "unrecognized cdp msg type")) } func TestHandlerTestSuite(t *testing.T) { suite.Run(t, new(HandlerTestSuite)) }