grovetest

package
v1.6.0 Latest Latest
Warning

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

Go to latest
Published: Aug 3, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Overview

Package grovetest provides testing utilities for Grove applications. It includes a mock driver, fixture loader, and query assertion helpers.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AssertLastArgs

func AssertLastArgs(t *testing.T, d *MockDriver, expected ...any)

AssertLastArgs asserts the args of the last query match.

func AssertLastQuery

func AssertLastQuery(t *testing.T, d *MockDriver, expected string)

AssertLastQuery asserts the last query matches the given string exactly.

func AssertNoQueries

func AssertNoQueries(t *testing.T, d *MockDriver)

AssertNoQueries asserts that no queries were recorded.

func AssertQueryContains

func AssertQueryContains(t *testing.T, d *MockDriver, substring string)

AssertQueryContains asserts that at least one recorded query contains the given substring.

func AssertQueryCount

func AssertQueryCount(t *testing.T, d *MockDriver, n int)

AssertQueryCount asserts that exactly n queries were recorded.

Types

type Fixture

type Fixture struct {
	Table   string           `json:"table"`
	Records []map[string]any `json:"records"`
}

Fixture holds test fixture data.

func LoadFixtures

func LoadFixtures(path string) ([]Fixture, error)

LoadFixtures reads fixtures from a JSON file. Expected format:

[{"table": "users", "records": [{"name": "Alice"}, ...]}]

type MockDialect

type MockDialect struct{}

MockDialect implements driver.Dialect for testing. It uses PostgreSQL-like syntax by default.

func (*MockDialect) AppendBytes

func (d *MockDialect) AppendBytes(b, v []byte) []byte

func (*MockDialect) AppendTime

func (d *MockDialect) AppendTime(b []byte, t time.Time) []byte

func (*MockDialect) GoToDBType

func (d *MockDialect) GoToDBType(goType reflect.Type, opts schema.FieldOptions) string

func (*MockDialect) Name

func (d *MockDialect) Name() string

func (*MockDialect) Placeholder

func (d *MockDialect) Placeholder(n int) string

func (*MockDialect) Quote

func (d *MockDialect) Quote(ident string) string

type MockDriver

type MockDriver struct {

	// ExecFunc optionally handles Exec calls. If nil, returns a default result.
	ExecFunc func(ctx context.Context, query string, args ...any) (driver.Result, error)
	// QueryFunc optionally handles Query calls. If nil, returns empty rows.
	QueryFunc func(ctx context.Context, query string, args ...any) (driver.Rows, error)
	// QueryRowFunc optionally handles QueryRow calls. If nil, returns a mock row.
	QueryRowFunc func(ctx context.Context, query string, args ...any) driver.Row
	// contains filtered or unexported fields
}

MockDriver is an in-memory driver that records queries for testing. It implements driver.Driver but doesn't execute any real queries.

func NewMockDriver

func NewMockDriver() *MockDriver

NewMockDriver creates a new mock driver.

func (*MockDriver) BeginTx

func (d *MockDriver) BeginTx(_ context.Context, _ *driver.TxOptions) (driver.Tx, error)

func (*MockDriver) Close

func (d *MockDriver) Close() error

func (*MockDriver) Dialect

func (d *MockDriver) Dialect() driver.Dialect

func (*MockDriver) Exec

func (d *MockDriver) Exec(ctx context.Context, query string, args ...any) (driver.Result, error)

func (*MockDriver) GroveTx

func (d *MockDriver) GroveTx(ctx context.Context, isolationLevel int, readOnly bool) (any, error)

GroveTx satisfies the txBeginner adapter interface.

func (*MockDriver) LastQuery

func (d *MockDriver) LastQuery() *RecordedQuery

LastQuery returns the most recently recorded query, or nil if none.

func (*MockDriver) Name

func (d *MockDriver) Name() string

func (*MockDriver) Open

func (d *MockDriver) Open(_ context.Context, _ string, opts ...driver.Option) error

func (*MockDriver) Ping

func (d *MockDriver) Ping(_ context.Context) error

func (*MockDriver) Queries

func (d *MockDriver) Queries() []RecordedQuery

Queries returns all recorded queries.

func (*MockDriver) Query

func (d *MockDriver) Query(ctx context.Context, query string, args ...any) (driver.Rows, error)

func (*MockDriver) QueryRow

func (d *MockDriver) QueryRow(ctx context.Context, query string, args ...any) driver.Row

func (*MockDriver) Reset

func (d *MockDriver) Reset()

Reset clears all recorded queries.

func (*MockDriver) SupportsReturning

func (d *MockDriver) SupportsReturning() bool

type MockResult

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

MockResult implements driver.Result.

func (*MockResult) LastInsertId

func (r *MockResult) LastInsertId() (int64, error)

func (*MockResult) RowsAffected

func (r *MockResult) RowsAffected() (int64, error)

type MockRow

type MockRow struct{}

MockRow implements driver.Row.

func (*MockRow) Scan

func (r *MockRow) Scan(_ ...any) error

type MockRows

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

MockRows implements driver.Rows with no data.

func (*MockRows) Close

func (r *MockRows) Close() error

func (*MockRows) Columns

func (r *MockRows) Columns() ([]string, error)

func (*MockRows) Err

func (r *MockRows) Err() error

func (*MockRows) Next

func (r *MockRows) Next() bool

func (*MockRows) Scan

func (r *MockRows) Scan(_ ...any) error

type MockTx

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

MockTx implements driver.Tx.

func (*MockTx) Commit

func (t *MockTx) Commit() error

func (*MockTx) Exec

func (t *MockTx) Exec(ctx context.Context, query string, args ...any) (driver.Result, error)

func (*MockTx) Query

func (t *MockTx) Query(ctx context.Context, query string, args ...any) (driver.Rows, error)

func (*MockTx) QueryRow

func (t *MockTx) QueryRow(ctx context.Context, query string, args ...any) driver.Row

func (*MockTx) Rollback

func (t *MockTx) Rollback() error

type RecordedQuery

type RecordedQuery struct {
	Query  string
	Args   []any
	Method string // "Exec", "Query", "QueryRow"
}

RecordedQuery holds information about a query executed through the mock driver.

Jump to

Keyboard shortcuts

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