2021-01-05 19:50:39 +00:00
|
|
|
package sqlite
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/go-testfixtures/testfixtures/v3"
|
2021-01-17 16:37:16 +00:00
|
|
|
"github.com/mickael-menu/zk/util/opt"
|
2021-01-10 15:39:10 +00:00
|
|
|
"github.com/mickael-menu/zk/util/test/assert"
|
2021-01-05 19:50:39 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
// testTransaction is an utility function used to test a SQLite transaction to
|
2021-01-17 16:37:16 +00:00
|
|
|
// the DB, which loads the default set of DB fixtures.
|
2021-01-05 19:50:39 +00:00
|
|
|
func testTransaction(t *testing.T, test func(tx Transaction)) {
|
2021-01-17 16:37:16 +00:00
|
|
|
testTransactionWithFixtures(t, opt.NewString("default"), test)
|
|
|
|
}
|
|
|
|
|
|
|
|
// testTransaction is an utility function used to test a SQLite transaction to
|
|
|
|
// an empty DB.
|
|
|
|
func testTransactionWithoutFixtures(t *testing.T, test func(tx Transaction)) {
|
|
|
|
testTransactionWithFixtures(t, opt.NullString, test)
|
|
|
|
}
|
|
|
|
|
|
|
|
// testTransactionWithFixtures is an utility function used to test a SQLite transaction to
|
|
|
|
// the DB, which loads the given set of DB fixtures.
|
|
|
|
func testTransactionWithFixtures(t *testing.T, fixturesDir opt.String, test func(tx Transaction)) {
|
2021-01-05 19:50:39 +00:00
|
|
|
db, err := OpenInMemory()
|
|
|
|
assert.Nil(t, err)
|
|
|
|
err = db.Migrate()
|
|
|
|
assert.Nil(t, err)
|
|
|
|
|
2021-01-17 16:37:16 +00:00
|
|
|
if !fixturesDir.IsNull() {
|
|
|
|
fixtures, err := testfixtures.New(
|
|
|
|
testfixtures.Database(db.db),
|
|
|
|
testfixtures.Dialect("sqlite"),
|
|
|
|
testfixtures.Directory("fixtures/"+fixturesDir.String()),
|
|
|
|
// Necessary to work with an in-memory database.
|
|
|
|
testfixtures.DangerousSkipTestDatabaseCheck(),
|
|
|
|
)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
err = fixtures.Load()
|
|
|
|
assert.Nil(t, err)
|
|
|
|
}
|
2021-01-05 19:50:39 +00:00
|
|
|
|
|
|
|
err = db.WithTransaction(func(tx Transaction) error {
|
|
|
|
test(tx)
|
|
|
|
return nil
|
|
|
|
})
|
|
|
|
assert.Nil(t, err)
|
|
|
|
}
|