ipld-eth-server/observers/blockchain_db_observer_test.go

58 lines
1.3 KiB
Go
Raw Normal View History

package observers_test
import (
2017-11-02 22:37:27 +00:00
"runtime"
"github.com/8thlight/vulcanizedb/config"
"github.com/8thlight/vulcanizedb/core"
"github.com/8thlight/vulcanizedb/observers"
2017-11-03 13:01:35 +00:00
"github.com/8thlight/vulcanizedb/repositories"
"github.com/jmoiron/sqlx"
_ "github.com/lib/pq"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
2017-11-02 22:37:27 +00:00
var (
_, filename, _, _ = runtime.Caller(0)
)
var _ = Describe("Saving blocks to the database", func() {
var db *sqlx.DB
var err error
BeforeEach(func() {
2017-11-02 22:37:27 +00:00
cfg := config.NewConfig("private")
pgConfig := config.DbConnectionString(cfg.Database)
db, err = sqlx.Connect("postgres", pgConfig)
2017-10-31 13:58:04 +00:00
db.MustExec("DELETE FROM transactions")
db.MustExec("DELETE FROM blocks")
})
AfterEach(func() {
db.Close()
})
It("implements the observer interface", func() {
var observer core.BlockchainObserver = observers.BlockchainDBObserver{Db: db}
Expect(observer).NotTo(BeNil())
})
2017-11-03 13:01:35 +00:00
It("saves a block with one transaction", func() {
2017-11-02 14:36:53 +00:00
block := core.Block{
2017-11-03 13:01:35 +00:00
Number: 123,
Transactions: []core.Transaction{{}},
2017-11-02 14:36:53 +00:00
}
observer := observers.BlockchainDBObserver{Db: db}
observer.NotifyBlockAdded(block)
2017-11-03 13:01:35 +00:00
repository := repositories.NewPostgres(db)
savedBlock := repository.FindBlockByNumber(123)
Expect(savedBlock).NotTo(BeNil())
Expect(len(savedBlock.Transactions)).To(Equal(1))
2017-10-31 13:58:04 +00:00
})
})