Update price feeds if header changed by validator

- currently not validating price feeds if the underlying header already exists
  and is valid, since price feeds should have been added when initial header
  was added
This commit is contained in:
Rob Mulholand
2018-08-16 11:22:16 -05:00
parent 6e68dc4a92
commit 72a849a272
10 changed files with 65 additions and 13 deletions
@@ -2,10 +2,13 @@ package repositories
import (
"database/sql"
"errors"
"github.com/vulcanize/vulcanizedb/pkg/core"
"github.com/vulcanize/vulcanizedb/pkg/datastore/postgres"
)
var ErrValidHeaderExists = errors.New("valid header already exists")
type HeaderRepository struct {
database *postgres.DB
}
@@ -25,7 +28,7 @@ func (repository HeaderRepository) CreateOrUpdateHeader(header core.Header) (int
if headerMustBeReplaced(hash, header) {
return repository.replaceHeader(header)
}
return 0, err
return 0, ErrValidHeaderExists
}
func (repository HeaderRepository) GetHeader(blockNumber int64) (core.Header, error) {
@@ -13,7 +13,6 @@ import (
var _ = Describe("Block header repository", func() {
Describe("creating or updating a header", func() {
It("adds a header", func() {
node := core.Node{}
db := test_config.NewTestDB(node)
@@ -56,7 +55,7 @@ var _ = Describe("Block header repository", func() {
Expect(ethNodeFingerprint).To(Equal(db.Node.ID))
})
It("does not duplicate headers", func() {
It("returns valid header exists error if attempting duplicate headers", func() {
node := core.Node{}
db := test_config.NewTestDB(node)
test_config.CleanTestDB(db)
@@ -71,7 +70,8 @@ var _ = Describe("Block header repository", func() {
Expect(err).NotTo(HaveOccurred())
_, err = repo.CreateOrUpdateHeader(header)
Expect(err).NotTo(HaveOccurred())
Expect(err).To(HaveOccurred())
Expect(err).To(MatchError(repositories.ErrValidHeaderExists))
var dbHeaders []core.Header
err = db.Select(&dbHeaders, `SELECT block_number, hash, raw FROM public.headers WHERE block_number = $1`, header.BlockNumber)