testutil

package
v0.8.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 12, 2026 License: MIT Imports: 29 Imported by: 0

Documentation

Overview

Package testutil provides shared test utilities for Melange integration tests.

Package testutil provides shared test utilities for Melange integration tests.

Package testutil provides shared test utilities for Melange integration tests.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DB

func DB(tb testing.TB) *sql.DB

DB returns a fully migrated database connection for testing. Each call creates a new isolated database copied from the template. The database is automatically cleaned up when the test completes. Works with both *testing.T and *testing.B.

If DATABASE_URL environment variable is set, connects to remote database instead.

func DBWithDatabaseSchema added in v0.8.0

func DBWithDatabaseSchema(tb testing.TB, databaseSchema string) *sql.DB

func DSN added in v0.7.0

func DSN(tb testing.TB) string

DSN returns the connection string for an isolated test database. Unlike DB(), it returns the raw DSN so callers can open with any driver. The database is automatically cleaned up when the test completes.

func DSNWithDatabaseSchema added in v0.8.0

func DSNWithDatabaseSchema(tb testing.TB, databaseSchema string) string

func DomainTablesSQL

func DomainTablesSQL() string

DomainTablesSQL returns the embedded SQL for creating domain tables. Domain tables always live in the public schema.

func EmptyDB

func EmptyDB(tb testing.TB) *sql.DB

EmptyDB returns an empty database connection for testing. Each call creates a new isolated empty database. The database is automatically cleaned up when the test completes. Works with both *testing.T and *testing.B.

func PostgresSchema added in v0.8.0

func PostgresSchema(schema string) string

PostgresSchema returns a literal with the schema name or "current_schema()" if empty.

func TuplesViewSQL

func TuplesViewSQL(databaseSchema string) string

TuplesViewSQL returns the embedded SQL for creating the tuples view.

Types

type BulkFixtures added in v0.6.0

type BulkFixtures struct {
	// contains filtered or unexported fields
}

BulkFixtures provides factory functions for creating test data using PostgreSQL COPY FROM. This is 10-100x faster than batch INSERTs for large datasets.

func NewBulkFixtures added in v0.6.0

func NewBulkFixtures(ctx context.Context, db *sql.DB) *BulkFixtures

NewBulkFixtures creates a new BulkFixtures instance for bulk data loading via COPY FROM.

func (*BulkFixtures) AddOrganizationMembers added in v0.6.0

func (bf *BulkFixtures) AddOrganizationMembers(orgID int64, userIDs []int64, role string) error

AddOrganizationMembers adds users to an organization with the specified role using COPY FROM.

func (*BulkFixtures) CreateOrganizations added in v0.6.0

func (bf *BulkFixtures) CreateOrganizations(n int) ([]int64, error)

CreateOrganizations creates n organizations using COPY FROM. Falls back to batch INSERT if COPY fails.

func (*BulkFixtures) CreatePullRequests added in v0.6.0

func (bf *BulkFixtures) CreatePullRequests(repoID int64, authorIDs []int64, n int) ([]int64, error)

CreatePullRequests creates pull requests in the given repository using COPY FROM. Cycles through authorIDs for each PR.

func (*BulkFixtures) CreateRepositories added in v0.6.0

func (bf *BulkFixtures) CreateRepositories(orgID int64, n int) ([]int64, error)

CreateRepositories creates n repositories under an organization using COPY FROM.

func (*BulkFixtures) CreateUsers added in v0.6.0

func (bf *BulkFixtures) CreateUsers(n int) ([]int64, error)

CreateUsers creates n users using COPY FROM for bulk loading. Falls back to batch INSERT if COPY fails.

func (*BulkFixtures) TupleCount added in v0.6.0

func (bf *BulkFixtures) TupleCount() (int, error)

TupleCount returns the current count of tuples in the melange_tuples view.

type DatabaseConfig added in v0.6.0

type DatabaseConfig struct {
	URL            string
	MaxConnections int
	EnablePooling  bool
}

DatabaseConfig holds configuration for connecting to a database.

func GetDatabaseConfig added in v0.6.0

func GetDatabaseConfig() DatabaseConfig

GetDatabaseConfig reads database configuration from environment variables. If DATABASE_URL is set, it returns configuration for a remote database. Otherwise, returns an empty config which signals to use testcontainers.

type Fixtures

type Fixtures struct {
	// contains filtered or unexported fields
}

Fixtures provides factory functions for creating test data in bulk. All functions use batch inserts for efficiency at scale.

func NewFixtures

func NewFixtures(ctx context.Context, db *sql.DB) *Fixtures

NewFixtures creates a new Fixtures instance for bulk data insertion.

func (*Fixtures) AddOrganizationMembers

func (f *Fixtures) AddOrganizationMembers(orgID int64, userIDs []int64, role string) error

AddOrganizationMembers adds users to an organization with the specified role. role must be one of: owner, admin, member, billing_manager

func (*Fixtures) CreateOrganizations

func (f *Fixtures) CreateOrganizations(n int) ([]int64, error)

CreateOrganizations creates n organizations and returns their IDs.

func (*Fixtures) CreatePullRequests

func (f *Fixtures) CreatePullRequests(repoID int64, authorIDs []int64, n int) ([]int64, error)

CreatePullRequests creates pull requests in the given repository. Cycles through authorIDs for each PR.

func (*Fixtures) CreateRepositories

func (f *Fixtures) CreateRepositories(orgID int64, n int) ([]int64, error)

CreateRepositories creates n repositories under an organization and returns their IDs.

func (*Fixtures) CreateUsers

func (f *Fixtures) CreateUsers(n int) ([]int64, error)

CreateUsers creates n users and returns their IDs.

func (*Fixtures) TupleCount

func (f *Fixtures) TupleCount() (int, error)

TupleCount returns the current count of tuples in the melange_tuples view.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL