Implement private clone method to support fluent API
This commit is contained in:
parent
b9fc77cb77
commit
90528be927
47
expecter.go
47
expecter.go
@ -4,23 +4,19 @@ import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// Expecter is the exported struct used for setting expectations
|
||||
type Expecter struct {
|
||||
adapter Adapter
|
||||
}
|
||||
|
||||
// AdapterFactory is a generic interface for arbitrary adapters that satisfy
|
||||
// the interface. variadic args are passed to gorm.Open.
|
||||
type AdapterFactory func(dialect string, args ...interface{}) (error, *DB, Adapter)
|
||||
|
||||
func (h *Expecter) ExpectFirst(model interface{}) ExpectedQuery {
|
||||
fmt.Printf("Expecting query: %s", "some query\n")
|
||||
return h.adapter.ExpectQuery("some sql")
|
||||
}
|
||||
// Expecter is the exported struct used for setting expectations
|
||||
type Expecter struct {
|
||||
Value interface{}
|
||||
adapter Adapter
|
||||
search *search
|
||||
values map[string]interface{}
|
||||
|
||||
func (h *Expecter) ExpectFind(model interface{}) ExpectedQuery {
|
||||
fmt.Println("Expecting query: %s", "some query involving Find")
|
||||
return h.adapter.ExpectQuery("some find condition")
|
||||
// globally scoped expecter
|
||||
root *Expecter
|
||||
}
|
||||
|
||||
// NewDefaultExpecter returns a Expecter powered by go-sqlmock
|
||||
@ -44,3 +40,30 @@ func NewExpecter(fn AdapterFactory, dialect string, args ...interface{}) (error,
|
||||
|
||||
return nil, gormDb, &Expecter{adapter: adapter}
|
||||
}
|
||||
|
||||
/* PUBLIC METHODS */
|
||||
|
||||
func (h *Expecter) ExpectFirst(model interface{}) ExpectedQuery {
|
||||
fmt.Printf("Expecting query: %s", "some query\n")
|
||||
return h.adapter.ExpectQuery("some sql")
|
||||
}
|
||||
|
||||
func (h *Expecter) ExpectFind(model interface{}) ExpectedQuery {
|
||||
fmt.Println("Expecting query: %s", "some query involving Find")
|
||||
return h.adapter.ExpectQuery("some find condition")
|
||||
}
|
||||
|
||||
/* PRIVATE METHODS */
|
||||
|
||||
// clone is similar to DB.clone, and ensures that the root Expecter is not
|
||||
// polluted with subsequent search constraints
|
||||
func (h *Expecter) clone() *Expecter {
|
||||
expecterCopy := &Expecter{
|
||||
adapter: h.adapter,
|
||||
root: h.root,
|
||||
values: map[string]interface{}{},
|
||||
Value: h.Value,
|
||||
}
|
||||
|
||||
return expecterCopy
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user