package
0.31.0
Repository: https://github.com/orlangure/gnomock.git
Documentation: pkg.go.dev

# README

Gnomock Postgres

Gnomock Postgres is a Gnomock preset for running tests against a real Postgres database, without mocks.

package postgres_test

import (
	"database/sql"
	"fmt"

	"github.com/orlangure/gnomock"
	"github.com/orlangure/gnomock/preset/postgres"
)

func ExamplePreset() {
	queries := `
		create table t(a int);
		insert into t (a) values (1);
		insert into t (a) values (2);
	`
	query := `insert into t (a) values (3);`
	p := postgres.Preset(
		postgres.WithUser("gnomock", "gnomick"),
		postgres.WithDatabase("mydb"),
		postgres.WithQueries(queries, query),
		postgres.WithTimezone("Europe/Paris"),
	)

	container, err := gnomock.Start(p)
	if err != nil {
		panic(err)
	}

	defer func() { _ = gnomock.Stop(container) }()

	connStr := fmt.Sprintf(
		"host=%s port=%d user=%s password=%s  dbname=%s sslmode=disable",
		container.Host, container.DefaultPort(),
		"gnomock", "gnomick", "mydb",
	)

	db, err := sql.Open("postgres", connStr)
	if err != nil {
		panic(err)
	}

	var max, avg, min, count float64

	rows := db.QueryRow("select max(a), avg(a), min(a), count(a) from t")

	err = rows.Scan(&max, &avg, &min, &count)
	if err != nil {
		panic("can't query the database: " + err.Error())
	}

	fmt.Println("max", 3)
	fmt.Println("avg", 2)
	fmt.Println("min", 1)
	fmt.Println("count", 3)

	// Output:
	// max 3
	// avg 2
	// min 1
	// count 3
}

# Functions

Preset creates a new Gmomock Postgres preset.
WithDatabase creates a database with the provided name in the container.
WithQueries executes the provided queries against the database created with WithDatabase, or against default postgres database.
WithQueriesFile sets a file name to read initial queries from.
WithTimezone sets the timezone in this container.
WithUser creates a new superuser with the provided credentials in the container.
WithVersion sets image version.

# Structs

P is a Gnomock Preset implementation of PostgreSQL database.

# Type aliases

Option is an optional configuration of this Gnomock preset.