package memdb import ( "colinear/x/colinearcore/types" "fmt" "testing" "github.com/dgraph-io/badger/v3" ) func TestBidFlow(t *testing.T) { // this should panic if there's a problem AuctionDB.Mount() // add a bid if err := AuctionDB.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 := AuctionDB.AddBid("0", &types.Bid{Owner: "cosmos456", Amount: "200"}); err != nil { panic(err) } // get all bids out if bids, err := AuctionDB.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 := AuctionDB.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 := AuctionDB.ClearAuctionBids("0"); err != nil { panic(err) } else { // expect auction key to be unknown if err := AuctionDB.db.View(func(txn *badger.Txn) error { _, err := txn.Get([]byte("0")) return err }); err != nil { if err != badger.ErrKeyNotFound { panic(err) } } } } func TestVerifiedFlow(t *testing.T) { // this should panic if there's a problem AuctionDB.Mount() providers := []string{ "colinear1...", "colinear2...", "colinear3...", "colinear4...", } if err := AuctionDB.SetVerifiedProviders("0", providers); err != nil { panic(err) } if prov, err := AuctionDB.GetVerifiedProviders("0"); err != nil { panic(err) } else { if len(prov) != 4 { panic(fmt.Sprintf("providers length should be 4, got %d instead", len(prov))) } if prov[0] != "colinear1..." { panic(fmt.Sprintf("verified provider 1 should be `colinear1...`, instead got `%s`", prov[0])) } } if err := AuctionDB.ClearVerifiedProviders("0"); err != nil { panic(err) } if _, err := AuctionDB.GetVerifiedProviders("0"); err == nil { panic("Should not return a provider") } // } else { // just a test - should exit with "key not found" // panic(err) // } }