mirror of
https://github.com/DATA-DOG/go-sqlmock.git
synced 2024-11-30 08:56:44 +02:00
59 lines
1.4 KiB
Go
59 lines
1.4 KiB
Go
package sqlmock
|
|
|
|
import (
|
|
"database/sql/driver"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
type AnyTime struct{}
|
|
|
|
// Match satisfies sqlmock.Argument interface
|
|
func (a AnyTime) Match(v driver.Value) bool {
|
|
_, ok := v.(time.Time)
|
|
return ok
|
|
}
|
|
|
|
func TestAnyTimeArgument(t *testing.T) {
|
|
t.Parallel()
|
|
db, mock, err := New()
|
|
if err != nil {
|
|
t.Errorf("an error '%s' was not expected when opening a stub database connection", err)
|
|
}
|
|
defer db.Close()
|
|
|
|
mock.ExpectExec("INSERT INTO users").
|
|
WithArgs("john", AnyTime{}).
|
|
WillReturnResult(NewResult(1, 1))
|
|
|
|
_, err = db.Exec("INSERT INTO users(name, created_at) VALUES (?, ?)", "john", time.Now())
|
|
if err != nil {
|
|
t.Errorf("error '%s' was not expected, while inserting a row", err)
|
|
}
|
|
|
|
if err := mock.ExpectationsWereMet(); err != nil {
|
|
t.Errorf("there were unfulfilled expections: %s", err)
|
|
}
|
|
}
|
|
|
|
func TestByteSliceArgument(t *testing.T) {
|
|
t.Parallel()
|
|
db, mock, err := New()
|
|
if err != nil {
|
|
t.Errorf("an error '%s' was not expected when opening a stub database connection", err)
|
|
}
|
|
defer db.Close()
|
|
|
|
username := []byte("user")
|
|
mock.ExpectExec("INSERT INTO users").WithArgs(username).WillReturnResult(NewResult(1, 1))
|
|
|
|
_, err = db.Exec("INSERT INTO users(username) VALUES (?)", username)
|
|
if err != nil {
|
|
t.Errorf("error '%s' was not expected, while inserting a row", err)
|
|
}
|
|
|
|
if err := mock.ExpectationsWereMet(); err != nil {
|
|
t.Errorf("there were unfulfilled expections: %s", err)
|
|
}
|
|
}
|