Rename TestHelper to Expecter and simplify factory function(s)

This commit is contained in:
Ian Tan 2017-11-17 17:19:49 +08:00
parent 36170724dd
commit 71174be05a

View File

@ -4,57 +4,43 @@ import (
"fmt" "fmt"
) )
// TestHelper is the exported struct used for setting expectations // Expecter is the exported struct used for setting expectations
type TestHelper struct { type Expecter struct {
adapter Adapter adapter Adapter
asserter Asserter
} }
// Close closes the DB connection // AdapterFactory is a generic interface for arbitrary adapters that satisfy
func (h *TestHelper) Close() error { // the interface. variadic args are passed to gorm.Open.
return h.adapter.Close() type AdapterFactory func(dialect string, args ...interface{}) (error, *DB, Adapter)
}
func (h *TestHelper) ExpectFirst(model interface{}) Query { func (h *Expecter) ExpectFirst(model interface{}) ExpectedQuery {
fmt.Printf("Expecting query: %s", "some query\n") fmt.Printf("Expecting query: %s", "some query\n")
return h.asserter.Query("some sql") return h.adapter.ExpectQuery("some sql")
} }
func (h *TestHelper) ExpectFind(model interface{}) { func (h *Expecter) ExpectFind(model interface{}) ExpectedQuery {
fmt.Println("Expecting query: %s", "some query involving Find") fmt.Println("Expecting query: %s", "some query involving Find")
return h.adapter.ExpectQuery("some find condition")
} }
// NewTestHelper returns a fresh TestHelper with an arbitary Adapter // NewDefaultExpecter returns a Expecter powered by go-sqlmock
func NewTestHelper(adapter Adapter) (error, *DB, *TestHelper) { func NewDefaultExpecter() (error, *DB, *Expecter) {
err, asserter := adapter.Open() err, gormDb, adapter := NewSqlmockAdapter("sqlmock", "mock_gorm_dsn")
if err != nil { if err != nil {
return err, nil, nil return err, nil, nil
} }
gormDb, err := Open("sqlmock", "mock_gorm_dsn") return nil, gormDb, &Expecter{adapter: adapter}
if err != nil {
return err, nil, nil
}
return nil, gormDb, &TestHelper{adapter: adapter, asserter: asserter}
} }
// NewDefaultTestHelper returns a TestHelper powered by go-sqlmock // NewExpecter returns an Expecter for arbitrary adapters
func NewDefaultTestHelper() (error, *DB, *TestHelper) { func NewExpecter(fn AdapterFactory, dialect string, args ...interface{}) (error, *DB, *Expecter) {
adapter := &SqlmockAdapter{} err, gormDb, adapter := fn(dialect, args...)
err, asserter := adapter.Open()
if err != nil { if err != nil {
return err, nil, nil return err, nil, nil
} }
gormDb, err := Open("sqlmock", "mock_gorm_dsn") return nil, gormDb, &Expecter{adapter: adapter}
if err != nil {
return err, nil, nil
}
return nil, gormDb, &TestHelper{adapter: adapter, asserter: asserter}
} }