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