pgxpoolmock

package module
v1.2.1 Latest Latest
Warning

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

Go to latest
Published: Jul 21, 2022 License: MIT Imports: 10 Imported by: 0

README

PGX POOL MOCK

THIS IS A FORK of github.com/driftprogramming/pgxpoolmock! MANY THANKS to the original authors.

This repo is mock pgxpool in https://github.com/jackc/pgx. so that you can test your data access code locally, no real database is needed. I also strongly recommend you use pgxpool rather than pgx only. see https://github.com/jackc/pgx/tree/master/pgxpool

How to install

go get -u github.com/edbmanniwood/pgxpoolmock

How to Use

See file order_dao_example_test.go to figure out how to use it. Or see the below:

package pgxpoolmock_test

import (
	"testing"

	"github.com/edbmanniwood/pgxpoolmock"
	"github.com/edbmanniwood/pgxpoolmock/testdata"
	"github.com/golang/mock/gomock"
	"github.com/stretchr/testify/assert"
)


func TestInsertOrder(t *testing.T) {
	ctrl := gomock.NewController(t)
	defer ctrl.Finish()

	mockPool := pgxpoolmock.NewMockPgxPool(ctrl)
	commandTag := pgconn.CommandTag("INSERT 0 1")
	mockPool.EXPECT().Exec(gomock.Any(), "insert into order (id, price) values ($1, $2)", 1, 2.3).Return(commandTag, nil)
	orderDao := testdata.OrderDAO{
		Pool: mockPool,
	}

	order := &testdata.Order{
		ID:    1,
		Price: 2.3,
	}
	err := orderDao.InsertOrder(order)
	if err != nil {
		t.Fatalf("%v", err)
	}
}

func TestGetOneOrderByID(t *testing.T) {
	ctrl := gomock.NewController(t)
	defer ctrl.Finish()
	mockPool := pgxpoolmock.NewMockPgxPool(ctrl)
	columns := []string{"id", "price"}
	pgxRow := pgxpoolmock.NewRow(columns, 1, 2.3)
	mockPool.EXPECT().QueryRow(gomock.Any(), "select id, price from order where id = $1", 1).Return(pgxRow)
	orderDao := testdata.OrderDAO{
		Pool: mockPool,
	}
	actualOrder, err := orderDao.GetOneOrderByID(1)
	if err != nil {
		t.Fatalf("%v", err)
	}
	assert.NotNil(t, actualOrder)
	assert.Equal(t, 1, actualOrder.ID)
	assert.Equal(t, 2.3, actualOrder.Price)
}

func TestName(t *testing.T) {
	t.Parallel()
	ctrl := gomock.NewController(t)
	defer ctrl.Finish()

	// given
	mockPool := pgxpoolmock.NewMockPgxPool(ctrl)
	columns := []string{"id", "price"}
	pgxRows := pgxpoolmock.NewRows(columns).AddRow(100, 100000.9).ToPgxRows()
	mockPool.EXPECT().Query(gomock.Any(), gomock.Any(), gomock.Any()).Return(pgxRows, nil)
	orderDao := testdata.OrderDAO{
		Pool: mockPool,
	}

	// when
	actualOrder := orderDao.GetOrderByID(1)

	// then
	assert.NotNil(t, actualOrder)
	assert.Equal(t, 100, actualOrder.ID)
	assert.Equal(t, 100000.9, actualOrder.Price)
}

Documentation

Overview

Package pgxpoolmock is a generated GoMock package.

Index

Constants

This section is empty.

Variables

View Source
var CSVColumnParser = func(s string) interface{} {
	switch {
	case strings.ToLower(s) == "null":
		return nil
	}
	return s
}

CSVColumnParser is a function which converts trimmed csv column string to a []byte representation. Currently transforms NULL to nil

Functions

This section is empty.

Types

type MockPgxPool

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

MockPgxPool is a mock of PgxPool interface.

func NewMockPgxPool

func NewMockPgxPool(ctrl *gomock.Controller) *MockPgxPool

NewMockPgxPool creates a new mock instance.

func (*MockPgxPool) Begin

func (m *MockPgxPool) Begin(ctx context.Context) (v4.Tx, error)

Begin mocks base method.

func (*MockPgxPool) BeginFunc

func (m *MockPgxPool) BeginFunc(ctx context.Context, f func(v4.Tx) error) error

BeginFunc mocks base method.

func (*MockPgxPool) BeginTx

func (m *MockPgxPool) BeginTx(ctx context.Context, txOptions v4.TxOptions) (v4.Tx, error)

BeginTx mocks base method.

func (*MockPgxPool) BeginTxFunc

func (m *MockPgxPool) BeginTxFunc(ctx context.Context, txOptions v4.TxOptions, f func(v4.Tx) error) error

BeginTxFunc mocks base method.

func (*MockPgxPool) Close

func (m *MockPgxPool) Close()

Close mocks base method.

func (*MockPgxPool) EXPECT

func (m *MockPgxPool) EXPECT() *MockPgxPoolMockRecorder

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockPgxPool) Exec

func (m *MockPgxPool) Exec(ctx context.Context, sql string, arguments ...interface{}) (pgconn.CommandTag, error)

Exec mocks base method.

func (*MockPgxPool) Query

func (m *MockPgxPool) Query(ctx context.Context, sql string, args ...interface{}) (v4.Rows, error)

Query mocks base method.

func (*MockPgxPool) QueryFunc

func (m *MockPgxPool) QueryFunc(ctx context.Context, sql string, args, scans []interface{}, f func(v4.QueryFuncRow) error) (pgconn.CommandTag, error)

QueryFunc mocks base method.

func (*MockPgxPool) QueryRow

func (m *MockPgxPool) QueryRow(ctx context.Context, sql string, args ...interface{}) v4.Row

QueryRow mocks base method.

func (*MockPgxPool) SendBatch

func (m *MockPgxPool) SendBatch(ctx context.Context, b *v4.Batch) v4.BatchResults

SendBatch mocks base method.

type MockPgxPoolMockRecorder

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

MockPgxPoolMockRecorder is the mock recorder for MockPgxPool.

func (*MockPgxPoolMockRecorder) Begin

func (mr *MockPgxPoolMockRecorder) Begin(ctx interface{}) *gomock.Call

Begin indicates an expected call of Begin.

func (*MockPgxPoolMockRecorder) BeginFunc

func (mr *MockPgxPoolMockRecorder) BeginFunc(ctx, f interface{}) *gomock.Call

BeginFunc indicates an expected call of BeginFunc.

func (*MockPgxPoolMockRecorder) BeginTx

func (mr *MockPgxPoolMockRecorder) BeginTx(ctx, txOptions interface{}) *gomock.Call

BeginTx indicates an expected call of BeginTx.

func (*MockPgxPoolMockRecorder) BeginTxFunc

func (mr *MockPgxPoolMockRecorder) BeginTxFunc(ctx, txOptions, f interface{}) *gomock.Call

BeginTxFunc indicates an expected call of BeginTxFunc.

func (*MockPgxPoolMockRecorder) Close

func (mr *MockPgxPoolMockRecorder) Close() *gomock.Call

Close indicates an expected call of Close.

func (*MockPgxPoolMockRecorder) Exec

func (mr *MockPgxPoolMockRecorder) Exec(ctx, sql interface{}, arguments ...interface{}) *gomock.Call

Exec indicates an expected call of Exec.

func (*MockPgxPoolMockRecorder) Query

func (mr *MockPgxPoolMockRecorder) Query(ctx, sql interface{}, args ...interface{}) *gomock.Call

Query indicates an expected call of Query.

func (*MockPgxPoolMockRecorder) QueryFunc

func (mr *MockPgxPoolMockRecorder) QueryFunc(ctx, sql, args, scans, f interface{}) *gomock.Call

QueryFunc indicates an expected call of QueryFunc.

func (*MockPgxPoolMockRecorder) QueryRow

func (mr *MockPgxPoolMockRecorder) QueryRow(ctx, sql interface{}, args ...interface{}) *gomock.Call

QueryRow indicates an expected call of QueryRow.

func (*MockPgxPoolMockRecorder) SendBatch

func (mr *MockPgxPoolMockRecorder) SendBatch(ctx, b interface{}) *gomock.Call

SendBatch indicates an expected call of SendBatch.

type PgxPool

type PgxPool interface {
	Close()
	Exec(ctx context.Context, sql string, arguments ...interface{}) (pgconn.CommandTag, error)
	Query(ctx context.Context, sql string, args ...interface{}) (pgx.Rows, error)
	QueryRow(ctx context.Context, sql string, args ...interface{}) pgx.Row
	QueryFunc(ctx context.Context, sql string, args []interface{}, scans []interface{}, f func(pgx.QueryFuncRow) error) (pgconn.CommandTag, error)
	SendBatch(ctx context.Context, b *pgx.Batch) pgx.BatchResults
	Begin(ctx context.Context) (pgx.Tx, error)
	BeginTx(ctx context.Context, txOptions pgx.TxOptions) (pgx.Tx, error)
	BeginFunc(ctx context.Context, f func(pgx.Tx) error) error
	BeginTxFunc(ctx context.Context, txOptions pgx.TxOptions, f func(pgx.Tx) error) error
}

type Row

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

Row is a mocked row that can be returned from QueryRow

func NewRow

func NewRow(columns []string, values ...interface{}) *Row

func (*Row) RowError

func (r *Row) RowError(row int, err error) *Row

RowError allows to set an error which will be returned when the row is read

func (*Row) Scan

func (r *Row) Scan(dest ...interface{}) error

type Rows

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

Rows is a mocked collection of rows to return for Query result

func NewRows

func NewRows(columns []string) *Rows

NewMockRows allows Rows to be created from a sql interface{} slice or from the CSV string and to be used as sql driver.Rows. Use Sqlmock.NewRows instead if using a custom converter

func NewRowsWithColumnDefinition

func NewRowsWithColumnDefinition(columns ...pgproto3.FieldDescription) *Rows

NewRowsWithColumnDefinition return rows with columns metadata

func (*Rows) AddRow

func (r *Rows) AddRow(values ...interface{}) *Rows

AddRow composed from database interface{} slice return the same instance to perform subsequent actions. Note that the number of values must match the number of columns

func (*Rows) CloseError

func (r *Rows) CloseError(err error) *Rows

CloseError allows to set an error which will be returned by rows.Close function.

The close error will be triggered only in cases when rows.Next() EOF was not yet reached, that is a default sql library behavior

func (*Rows) FromCSVString

func (r *Rows) FromCSVString(s string) *Rows

FromCSVString build rows from csv string. return the same instance to perform subsequent actions. Note that the number of values must match the number of columns

func (*Rows) RowError

func (r *Rows) RowError(row int, err error) *Rows

RowError allows to set an error which will be returned when a given row number is read

func (*Rows) ToPgxRows

func (r *Rows) ToPgxRows() pgx.Rows

Jump to

Keyboard shortcuts

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