auth/internal/testing/sqltest/sqltest.go

41 lines
682 B
Go
Raw Normal View History

2022-01-08 17:42:58 +00:00
package sqltest
import (
"database/sql/driver"
2022-01-08 17:42:58 +00:00
"testing"
"time"
2022-01-08 17:42:58 +00:00
"github.com/DATA-DOG/go-sqlmock"
2022-01-08 17:42:58 +00:00
"github.com/jmoiron/sqlx"
_ "modernc.org/sqlite" // used for running tests without same import in "god object"
2022-01-08 17:42:58 +00:00
)
type Time struct{}
func (Time) Match(v driver.Value) bool {
_, ok := v.(time.Time)
return ok
}
2022-01-08 17:42:58 +00:00
// Open creates a new InMemory sqlite3 database for testing.
func Open(tb testing.TB) (*sqlx.DB, sqlmock.Sqlmock, func()) {
2022-01-08 17:42:58 +00:00
tb.Helper()
db, mock, err := sqlmock.New()
if err != nil {
tb.Fatal(err)
}
2022-01-08 17:42:58 +00:00
2022-02-25 23:50:22 +00:00
xdb := sqlx.NewDb(db, "sqlite")
if err = xdb.Ping(); err != nil {
_ = db.Close()
2022-01-08 17:42:58 +00:00
tb.Fatal(err)
2022-01-08 17:42:58 +00:00
}
return xdb, mock, func() {
_ = db.Close()
2022-01-08 17:42:58 +00:00
}
}