gpu-compute-chain/x/colinear-core/memdb/biddb_test.go

61 lines
1.4 KiB
Go

package memdb
import (
"colinear/x/colinear-core/types"
"fmt"
"testing"
"github.com/dgraph-io/badger/v3"
)
func TestBasicFlow(t *testing.T) {
// this should panic if there's a problem
BidDB.Mount()
// add a bid
if err := BidDB.AddBid("0", &types.Bid{Owner: "cosmos123", Amount: "100"}); err != nil {
panic(err)
}
// add a higher bid (db funcs won't check amount, though)
if err := BidDB.AddBid("0", &types.Bid{Owner: "cosmos456", Amount: "200"}); err != nil {
panic(err)
}
// get all bids out
if bids, err := BidDB.GetBids("0"); err != nil {
panic(err)
} else {
if bids == nil {
panic("GetBids(0) should should not return nil")
}
if len(bids) != 2 {
panic(fmt.Sprintf("Length of GetBids(0) should be 2, instead got %d", len(bids)))
}
}
// check lowest bid
if bid, err := BidDB.GetLowestBid("0"); err != nil {
panic(err)
} else {
if bid.Owner != "cosmos123" || bid.Amount != "100" {
panic(fmt.Sprintf("Lowest auction item not selected. Amount %s with owner %s was chosen.", bid.Amount, bid.Owner))
}
}
// clear auction under id 0
if err := BidDB.ClearAuction("0"); err != nil {
panic(err)
} else {
// expect auction key to be unknown
if err := BidDB.db.View(func(txn *badger.Txn) error {
_, err := txn.Get([]byte("0"))
return err
}); err != nil {
if err != badger.ErrKeyNotFound {
panic(err)
}
}
}
}