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