Documentation ¶
Overview ¶
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
Index ¶
Constants ¶
const ( BoundaryTemplate = "boundary_template" Template1 = "template1" )
Template Database Names
const (
Postgres = "postgres"
)
Dialects
Variables ¶
var StartUsingTemplate func(dialect string, opt ...Option) (func() error, string, string, error) = startUsingTemplate
StartUsingTemplate creates a new test database from a postgres template database.
Functions ¶
This section is empty.
Types ¶
type Option ¶
type Option func(*Options)
Option - how Options are passed as arguments.
func WithTemplate ¶
WithTemplate tells the command with database template to use when creating a new test database.