decred.org/dcrdex@v1.0.5/server/db/driver/pg/tables_online_test.go (about) 1 //go:build pgonline 2 3 package pg 4 5 import ( 6 "context" 7 "testing" 8 9 "decred.org/dcrdex/dex" 10 ) 11 12 func TestCheckCurrentTimeZone(t *testing.T) { 13 currentTZ, err := checkCurrentTimeZone(archie.db) 14 if err != nil { 15 t.Fatal(err) 16 } 17 t.Logf("Set time zone: %v", currentTZ) 18 } 19 20 func TestPrepareTables(t *testing.T) { 21 if err := nukeAll(archie.db); err != nil { 22 t.Fatal(err) 23 } 24 25 // valid market 26 mktConfig, err := dex.NewMarketInfoFromSymbols("DCR", "BTC", 1e9, RateStep, EpochDuration, 0, MarketBuyBuffer) 27 if err != nil { 28 t.Fatal(err) 29 } 30 31 // Create new tables and schemas. 32 markets := []*dex.MarketInfo{mktConfig} 33 purgeMkts, err := prepareTables(context.Background(), archie.db, markets) 34 if err != nil { 35 t.Error(err) 36 } 37 if purgeMkts != nil { 38 t.Error("expected no purged markets for new table") 39 } 40 41 // Cover the cases where the tables already exist (OK). This hits the 42 // upgradeDB path, which returns early with current == dbVersion. 43 purgeMkts, err = prepareTables(context.Background(), archie.db, markets) 44 if err != nil { 45 t.Error(err) 46 } 47 if purgeMkts != nil { 48 t.Error("expected no purged markets for no config changes") 49 } 50 51 // Mutated existing market. Should return mutated markets in purge 52 // returns. 53 mktConfig, err = dex.NewMarketInfoFromSymbols("DCR", "BTC", 1e8, RateStep, EpochDuration, 0, MarketBuyBuffer) // lot size change 54 if err != nil { 55 t.Fatal(err) 56 } 57 purgeMkts, err = prepareTables(context.Background(), archie.db, []*dex.MarketInfo{mktConfig}) 58 if err != nil { 59 t.Error(err) 60 } 61 if len(purgeMkts) != 1 || purgeMkts[0] != "dcr_btc" { 62 t.Error("expected a dcr_btc purge markets return for changed lot size") 63 } 64 65 // Add a new market. 66 mktConfig, _ = dex.NewMarketInfoFromSymbols("dcr", "ltc", 1e9, RateStep, EpochDuration, 0, MarketBuyBuffer) 67 purgeMkts, err = prepareTables(context.Background(), archie.db, []*dex.MarketInfo{mktConfig}) 68 if err != nil { 69 t.Error(err) 70 } 71 if purgeMkts != nil { 72 t.Error("expected no purged markets for new market") 73 } 74 } 75 76 func TestUpdateLotSize(t *testing.T) { 77 if err := nukeAll(archie.db); err != nil { 78 t.Fatal(err) 79 } 80 81 // valid market 82 mktConfig, err := dex.NewMarketInfoFromSymbols("DCR", "BTC", 1e9, RateStep, EpochDuration, 0, MarketBuyBuffer) 83 if err != nil { 84 t.Fatal(err) 85 } 86 87 // Create new tables and schemas. 88 markets := []*dex.MarketInfo{mktConfig} 89 _, err = prepareTables(context.Background(), archie.db, markets) 90 if err != nil { 91 t.Error(err) 92 } 93 94 mkts, err := loadMarkets(archie.db, marketsTableName) 95 if err != nil { 96 t.Error(err) 97 } 98 if mkts[0].LotSize != 1e9 { 99 t.Error("unexpected lot size before updating") 100 } 101 102 err = updateLotSize(archie.db, publicSchema, "dcr_btc", 1337) 103 if err != nil { 104 t.Error(err) 105 } 106 107 mkts, err = loadMarkets(archie.db, marketsTableName) 108 if err != nil { 109 t.Error(err) 110 } 111 if mkts[0].LotSize != 1337 { 112 t.Error("lot size is not 1337 after updating") 113 } 114 }