mocks.go 2.19 KB
Newer Older
1 2 3 4
package database

import (
	"github.com/ethereum/go-ethereum/common"
5
	"gorm.io/gorm"
Hamdi Allam's avatar
Hamdi Allam committed
6

7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
	"github.com/stretchr/testify/mock"
)

type MockBlocksView struct {
	mock.Mock
}

func (m *MockBlocksView) L1BlockHeader(common.Hash) (*L1BlockHeader, error) {
	args := m.Called()

	header, ok := args.Get(0).(*L1BlockHeader)
	if !ok {
		header = nil
	}
	return header, args.Error(1)
}

func (m *MockBlocksView) L1BlockHeaderWithFilter(BlockHeader) (*L1BlockHeader, error) {
	args := m.Called()
	return args.Get(0).(*L1BlockHeader), args.Error(1)
}

29 30 31 32 33
func (m *MockBlocksView) L1BlockHeaderWithScope(func(*gorm.DB) *gorm.DB) (*L1BlockHeader, error) {
	args := m.Called()
	return args.Get(0).(*L1BlockHeader), args.Error(1)
}

34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
func (m *MockBlocksView) L1LatestBlockHeader() (*L1BlockHeader, error) {
	args := m.Called()

	header, ok := args.Get(0).(*L1BlockHeader)
	if !ok {
		header = nil
	}

	return header, args.Error(1)
}

func (m *MockBlocksView) L2BlockHeader(common.Hash) (*L2BlockHeader, error) {
	args := m.Called()
	return args.Get(0).(*L2BlockHeader), args.Error(1)
}

func (m *MockBlocksView) L2BlockHeaderWithFilter(BlockHeader) (*L2BlockHeader, error) {
	args := m.Called()
	return args.Get(0).(*L2BlockHeader), args.Error(1)
}

55
func (m *MockBlocksView) L2BlockHeaderWithScope(func(*gorm.DB) *gorm.DB) (*L2BlockHeader, error) {
56
	args := m.Called()
57
	return args.Get(0).(*L2BlockHeader), args.Error(2)
58 59
}

60
func (m *MockBlocksView) L2LatestBlockHeader() (*L2BlockHeader, error) {
61
	args := m.Called()
62
	return args.Get(0).(*L2BlockHeader), args.Error(1)
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
}

type MockBlocksDB struct {
	MockBlocksView
}

func (m *MockBlocksDB) StoreL1BlockHeaders(headers []L1BlockHeader) error {
	args := m.Called(headers)
	return args.Error(1)
}

func (m *MockBlocksDB) StoreL2BlockHeaders(headers []L2BlockHeader) error {
	args := m.Called(headers)
	return args.Error(1)
}

79
// MockDB is a mock database that can be used for testing
80
type MockDB struct {
81 82
	MockBlocks *MockBlocksDB
	DB         *DB
83 84 85 86 87 88 89 90 91
}

func NewMockDB() *MockDB {
	// This is currently just mocking the BlocksDB interface
	// but can be expanded to mock other inner DB interfaces
	// as well
	mockBlocks := new(MockBlocksDB)
	db := &DB{Blocks: mockBlocks}

92
	return &MockDB{MockBlocks: mockBlocks, DB: db}
93
}