arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
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}