package memdb import ( "colinear/x/colinearcore/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) } } } }