Remove Asserter interface and combine its functionality into Adapter
This commit is contained in:
parent
71174be05a
commit
27ec78afaa
@ -6,42 +6,53 @@ import (
|
|||||||
sqlmock "gopkg.in/DATA-DOG/go-sqlmock.v1"
|
sqlmock "gopkg.in/DATA-DOG/go-sqlmock.v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
db *sql.DB
|
||||||
|
mock sqlmock.Sqlmock
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
db, mock, err = sqlmock.NewWithDSN("mock_gorm_dsn")
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
panic(err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adapter provides an abstract interface over concrete mock database
|
||||||
|
// implementations (e.g. go-sqlmock or go-testdb)
|
||||||
type Adapter interface {
|
type Adapter interface {
|
||||||
Open() (error, Asserter)
|
ExpectQuery(stmt string) ExpectedQuery
|
||||||
Close() error
|
ExpectExec(stmt string) ExpectedExec
|
||||||
}
|
}
|
||||||
|
|
||||||
// SqlmockAdapter implemenets the Adapter interface using go-sqlmock
|
// SqlmockAdapter implemenets the Adapter interface using go-sqlmock
|
||||||
// it is the default Adapter
|
// it is the default Adapter
|
||||||
type SqlmockAdapter struct {
|
type SqlmockAdapter struct {
|
||||||
mockDb *sql.DB
|
db *sql.DB
|
||||||
mock *sqlmock.Sqlmock
|
mocker sqlmock.Sqlmock
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open returns the raw sql.DB instance and an Asserter
|
func NewSqlmockAdapter(dialect string, args ...interface{}) (error, *DB, Adapter) {
|
||||||
func (adapter *SqlmockAdapter) Open() (error, Asserter) {
|
gormDb, err := Open("sqlmock", "mock_gorm_dsn")
|
||||||
mockDb, mock, err := sqlmock.NewWithDSN("mock_gorm_dsn")
|
|
||||||
|
|
||||||
adapter.mockDb = mockDb
|
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err, nil
|
return err, nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, &SqlmockAsserter{mock: mock, sqlmockDB: mockDb}
|
return nil, gormDb, &SqlmockAdapter{db: db, mocker: mock}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (adapter *SqlmockAdapter) Close() error {
|
func (a *SqlmockAdapter) ExpectQuery(stmt string) ExpectedQuery {
|
||||||
return adapter.mockDb.Close()
|
q := a.mocker.ExpectQuery(stmt)
|
||||||
|
|
||||||
|
return &SqlmockQuery{query: q}
|
||||||
}
|
}
|
||||||
|
|
||||||
type SqlmockAsserter struct {
|
func (a *SqlmockAdapter) ExpectExec(stmt string) ExpectedExec {
|
||||||
sqlmockDB *sql.DB
|
e := a.mocker.ExpectExec(stmt)
|
||||||
mock sqlmock.Sqlmock
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *SqlmockAsserter) Query(query string) Query {
|
return &SqlmockExec{exec: e}
|
||||||
q := a.mock.ExpectQuery(query)
|
|
||||||
|
|
||||||
return &SqlmockQuery{q}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user