testing

package
v0.11.0 Latest Latest
Warning

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

Go to latest
Published: Jul 6, 2026 License: MIT Imports: 33 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AssertAdminColumn

func AssertAdminColumn(t TestHelper, response *Response, column string)

func AssertAdminModelRegistered

func AssertAdminModelRegistered(t TestHelper, registry *admin.Registry, label string)

func AssertAdminPage

func AssertAdminPage(t TestHelper, response *Response, text string)

func AssertEmailSent

func AssertEmailSent(t TestHelper, outbox *MailOutbox, subject string)

func AssertEqualJSON

func AssertEqualJSON(t TestHelper, actual any, expected any)

func AssertHasFieldError

func AssertHasFieldError(t TestHelper, errors any, field string, message string)

func AssertHasNonFieldError

func AssertHasNonFieldError(t TestHelper, errors any, message string)

func AssertPermissionDenied

func AssertPermissionDenied(t TestHelper, user auth.User, permission string)

func AssertPermissionGranted

func AssertPermissionGranted(t TestHelper, user auth.User, permission string)

func AssertQueryCount

func AssertQueryCount(t TestHelper, counter QueryCount, expected int)

func AssertSignalSent

func AssertSignalSent(t TestHelper, responses []signals.Response)

func AssertTaskEnqueued

func AssertTaskEnqueued(t TestHelper, harness *QueueHarness, name string)

func LoadFixtures

func LoadFixtures(ctx context.Context, database *TestDatabase, fixtures []Fixture) error

func ModelTableName

func ModelTableName(model string) string

func RecordFormErrors

func RecordFormErrors(w http.ResponseWriter, errors map[string][]string)

func RecordTemplate

func RecordTemplate(w http.ResponseWriter, name string)

func TemporarySettings

func TemporarySettings(base conf.Settings, options ...SettingsOption) conf.Settings

func TransactionalFixtures

func TransactionalFixtures(ctx context.Context, database *TestDatabase, fixtures []Fixture, fn func(context.Context, Transaction) error) error

Types

type AdminClient

type AdminClient struct {
	*Client
}

func NewAdminClient

func NewAdminClient(handler http.Handler) *AdminClient

func (*AdminClient) Login

func (c *AdminClient) Login(user auth.User) *AdminClient

type CleanupHelper

type CleanupHelper interface {
	Helper()
	Cleanup(func())
}

type Client

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

func NewClient

func NewClient(handler http.Handler) *Client

func (*Client) Delete

func (c *Client) Delete(path string) *Response

func (*Client) Do

func (c *Client) Do(method string, path string, body io.Reader, headers map[string]string) *Response

func (*Client) FollowRedirects

func (c *Client) FollowRedirects(enabled bool) *Client

func (*Client) ForceLogin

func (c *Client) ForceLogin(user auth.User) *Client

func (*Client) Get

func (c *Client) Get(path string) *Response

func (*Client) JSON

func (c *Client) JSON(method string, path string, payload any) *Response

func (*Client) Options

func (c *Client) Options(path string) *Response

func (*Client) Patch

func (c *Client) Patch(path string, body string) *Response

func (*Client) PatchJSON

func (c *Client) PatchJSON(path string, payload any) *Response

func (*Client) Post

func (c *Client) Post(path string, body string) *Response

func (*Client) PostForm

func (c *Client) PostForm(path string, values url.Values) *Response

func (*Client) PostJSON

func (c *Client) PostJSON(path string, payload any) *Response

func (*Client) PostMultipart

func (c *Client) PostMultipart(path string, fields map[string]string, files map[string]MultipartFile) *Response

func (*Client) Put

func (c *Client) Put(path string, body string) *Response

func (*Client) PutJSON

func (c *Client) PutJSON(path string, payload any) *Response

func (*Client) SetCookie

func (c *Client) SetCookie(cookie *http.Cookie) *Client

func (*Client) WithSession

func (c *Client) WithSession(session *sessions.Session) *Client

type Factory

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

func NewFactory

func NewFactory(model string, defaults map[string]any) *Factory

func (*Factory) Build

func (f *Factory) Build(overrides map[string]any) Fixture

func (*Factory) BuildMany

func (f *Factory) BuildMany(count int) []Fixture

func (*Factory) WithNaturalKey

func (f *Factory) WithNaturalKey(fields ...string) *Factory

type Fixture

type Fixture struct {
	Model      string
	PK         any
	Fields     map[string]any
	NaturalKey []any
}

func DumpFixtures

func DumpFixtures(ctx context.Context, database *TestDatabase, model string) ([]Fixture, error)

type FixtureRow

type FixtureRow struct {
	Table  string
	Values map[string]any
}

func FixtureRows

func FixtureRows(fixtures []Fixture) []FixtureRow

type MailOutbox

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

func NewMailOutbox

func NewMailOutbox() *MailOutbox

func (*MailOutbox) AssertEmailSent

func (o *MailOutbox) AssertEmailSent(t TestHelper, subject string)

func (*MailOutbox) Backend

func (o *MailOutbox) Backend() *email.MemoryBackend

func (*MailOutbox) Clear

func (o *MailOutbox) Clear()

func (*MailOutbox) Messages

func (o *MailOutbox) Messages() []email.Message

func (*MailOutbox) Send

func (o *MailOutbox) Send(ctx context.Context, messages ...email.Message) (int, error)

type MultipartFile

type MultipartFile struct {
	Filename    string
	ContentType string
	Content     io.Reader
}

type QueryCount

type QueryCount interface {
	Count() int
}

type QueryCounter

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

func NewQueryCounter

func NewQueryCounter() *QueryCounter

func (*QueryCounter) Count

func (c *QueryCounter) Count() int

func (*QueryCounter) Record

func (c *QueryCounter) Record()

type QueueHarness

type QueueHarness struct {
	App     *queue.App
	Broker  *brokers.MemoryBroker
	Backend *backends.MemoryBackend
	// contains filtered or unexported fields
}

func NewQueueHarness

func NewQueueHarness(app *queue.App) *QueueHarness

func (*QueueHarness) Apply

func (h *QueueHarness) Apply(ctx context.Context, signature queue.Signature) (queue.Result, error)

func (*QueueHarness) AssertTaskEnqueued

func (h *QueueHarness) AssertTaskEnqueued(t TestHelper, name string)

func (*QueueHarness) Enqueue

func (h *QueueHarness) Enqueue(ctx context.Context, signature queue.Signature) (queue.Envelope, error)

func (*QueueHarness) Enqueued

func (h *QueueHarness) Enqueued() []queue.Envelope

type Response

type Response struct {
	StatusCode    int
	Header        http.Header
	Body          string
	Request       *http.Request
	Cookies       []*http.Cookie
	RedirectChain []string
}

func (*Response) AssertBodyContains

func (r *Response) AssertBodyContains(t TestHelper, value string)

func (*Response) AssertFormError

func (r *Response) AssertFormError(t TestHelper, field string, message string)

func (*Response) AssertHeader

func (r *Response) AssertHeader(t TestHelper, name string, value string)

func (*Response) AssertJSONPath

func (r *Response) AssertJSONPath(t TestHelper, path string, want any)

func (*Response) AssertNonFieldError

func (r *Response) AssertNonFieldError(t TestHelper, message string)

func (*Response) AssertRedirect

func (r *Response) AssertRedirect(t TestHelper, target string)

func (*Response) AssertStatus

func (r *Response) AssertStatus(t TestHelper, status int)

func (*Response) AssertTemplateUsed

func (r *Response) AssertTemplateUsed(t TestHelper, name string)

type SQLSchemaEditor

type SQLSchemaEditor struct {
	DB *sql.DB
}

func (SQLSchemaEditor) Execute

func (e SQLSchemaEditor) Execute(ctx context.Context, statement string, args ...any) error

type Sequence

type Sequence func(int) any

func Seq

func Seq(fn func(int) any) Sequence

type SettingsOption

type SettingsOption func(*conf.Settings)

func WithDatabaseURL

func WithDatabaseURL(databaseURL string) SettingsOption

func WithInstalledApps

func WithInstalledApps(apps ...string) SettingsOption

func WithMiddleware

func WithMiddleware(middleware ...string) SettingsOption

func WithTemplateDirs

func WithTemplateDirs(dirs ...string) SettingsOption

func WithTemporaryDatabase

func WithTemporaryDatabase(database *TestDatabase) SettingsOption

type SettingsOverride

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

func OverrideSettings

func OverrideSettings(target *conf.Settings, options ...SettingsOption) *SettingsOverride

func OverrideSettingsForTest

func OverrideSettingsForTest(t CleanupHelper, target *conf.Settings, options ...SettingsOption) *SettingsOverride

func (*SettingsOverride) Restore

func (o *SettingsOverride) Restore()

type TestDatabase

type TestDatabase struct {
	Database *orm.Database
	Path     string
	// contains filtered or unexported fields
}

func NewPostgresTestDatabase

func NewPostgresTestDatabase(ctx context.Context, dsn string) (*TestDatabase, error)

func NewSQLiteTestDatabase

func NewSQLiteTestDatabase(ctx context.Context) (*TestDatabase, error)

func (*TestDatabase) ApplyMigrations

func (d *TestDatabase) ApplyMigrations(ctx context.Context, migrationList []migrations.Migration) error

func (*TestDatabase) Close

func (d *TestDatabase) Close() error

func (*TestDatabase) LoadFixtures

func (d *TestDatabase) LoadFixtures(ctx context.Context, rows []FixtureRow) error

func (*TestDatabase) Reset

func (d *TestDatabase) Reset(ctx context.Context) error

func (*TestDatabase) RollbackTransaction

func (d *TestDatabase) RollbackTransaction(ctx context.Context, fn func(context.Context, Transaction) error) (err error)

func (*TestDatabase) SQLDB

func (d *TestDatabase) SQLDB() *sql.DB

func (*TestDatabase) TableExists

func (d *TestDatabase) TableExists(ctx context.Context, table string) (bool, error)

func (*TestDatabase) Transaction

func (d *TestDatabase) Transaction(ctx context.Context, fn func(context.Context, Transaction) error) (err error)

type TestHelper

type TestHelper interface {
	Helper()
	Fatalf(string, ...any)
}

type Transaction

type Transaction interface {
	ExecContext(context.Context, string, ...any) (sql.Result, error)
	QueryContext(context.Context, string, ...any) (*sql.Rows, error)
	QueryRowContext(context.Context, string, ...any) *sql.Row
}

Jump to

Keyboard shortcuts

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