* refact: Changes required for gorm v2 * refact: Add db.DB wrapper and refact all test fixtures to use it Stop leaking the gorm abstraction within our unit tests. * refact: Migrate direct calls to pq to pgx driver The refactor will remove the remaining direct dependencies on the pq driver which has been deprecated in favor of the pgx driver. It includes the addition of common.SqlOpen which is a wrapper around sql.Open, which is needed to deal with the driver name changing from "postgres" to "pgx" but in our code base the dialect and driver are synonyms.
26 lines
1.1 KiB
Go
26 lines
1.1 KiB
Go
// Package dbtest provides a way to create a clean database for tests using
|
|
// template databases. For it to function properly a postgres database server
|
|
// must be running with the expected templates. This is typically done using
|
|
// the docker image provided in the docker directory of this package.
|
|
//
|
|
// To use this package in a test add something like the following in the
|
|
// beginning of the test:
|
|
//
|
|
// c, u, _, err := dbtest.StartUsingTemplate(dbtest.Postgres)
|
|
// require.NoError(t, err)
|
|
// t.Cleanup(func() {
|
|
// require.NoError(t, c())
|
|
// })
|
|
// // use u to get a connection to the new database
|
|
// dBase, err := common.SqlOpen("postgres", u)
|
|
//
|
|
// By default this uses a template that already has all of the boundary
|
|
// migrations run. If a test needs a database without any migrations, like in
|
|
// the case where the migration code needs to be tested, a different template
|
|
// can be specified. This should generally be template1:
|
|
//
|
|
// c, u, _, err := dbtest.StartUsingTemplate(dbtest.Postgres, dbtest.WithTemplate(dbtest.Template1))
|
|
//
|
|
// See https://www.postgresql.org/docs/13/manage-ag-templatedbs.html
|
|
package dbtest
|