hermez-node/priceupdater/priceupdater_test.go
priceupdater/priceupdater_test.goRaw
1package priceupdater
2
3import (
4 "math/big"
5 "os"
6 "testing"
7
8 ethCommon "github.com/ethereum/go-ethereum/common"
9 "github.com/hermeznetwork/hermez-node/common"
10 dbUtils "github.com/hermeznetwork/hermez-node/db"
11 "github.com/hermeznetwork/hermez-node/db/historydb"
12 "github.com/hermeznetwork/hermez-node/test"
13 "github.com/stretchr/testify/assert"
14)
15
16func TestPriceUpdater(t *testing.T) {
17 // Init DB
18 pass := os.Getenv("POSTGRES_PASS")
19 db, err := dbUtils.InitSQLDB(5432, "localhost", "hermez", pass, "hermez")
20 assert.NoError(t, err)
21 historyDB := historydb.NewHistoryDB(db)
22 // Clean DB
23 test.WipeDB(historyDB.DB())
24 // Populate DB
25 // Gen blocks and add them to DB
26 blocks := test.GenBlocks(1, 2)
27 assert.NoError(t, historyDB.AddBlocks(blocks))
28 // Gen tokens and add them to DB
29 tokens := []common.Token{}
30 tokens = append(tokens, common.Token{
31 TokenID: 1,
32 EthBlockNum: blocks[0].EthBlockNum,
33 EthAddr: ethCommon.BigToAddress(big.NewInt(2)),
34 Name: "DAI",
35 Symbol: "DAI",
36 Decimals: 18,
37 })
38 assert.NoError(t, historyDB.AddTokens(tokens))
39 // Init price updater
40 pu := NewPriceUpdater("https://api-pub.bitfinex.com/v2/", historyDB)
41 // Update token list
42 assert.NoError(t, pu.UpdateTokenList())
43 // Update prices
44 pu.UpdatePrices()
45 // Check that prices have been updated
46 limit := uint(10)
47 fetchedTokens, _, err := historyDB.GetTokens(nil, nil, "", nil, &limit, historydb.OrderAsc)
48 assert.NoError(t, err)
49 // TokenID 0 (ETH) is always on the DB
50 assert.Equal(t, 2, len(fetchedTokens))
51 for _, token := range fetchedTokens {
52 assert.NotNil(t, token.USD)
53 assert.NotNil(t, token.USDUpdate)
54 }
55}