pgxpoolmock

package module
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Jul 21, 2022 License: MIT Imports: 11 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) Acquire added in v1.3.0

func (m *MockPgxPool) Acquire(arg0 context.Context) (*pgxpool.Conn, error)

Acquire mocks base method.

func (*MockPgxPool) Begin

func (m *MockPgxPool) Begin(arg0 context.Context) (pgx.Tx, error)

Begin mocks base method.

func (*MockPgxPool) BeginFunc

func (m *MockPgxPool) BeginFunc(arg0 context.Context, arg1 func(pgx.Tx) error) error

BeginFunc mocks base method.

func (*MockPgxPool) BeginTx

func (m *MockPgxPool) BeginTx(arg0 context.Context, arg1 pgx.TxOptions) (pgx.Tx, error)

BeginTx mocks base method.

func (*MockPgxPool) BeginTxFunc

func (m *MockPgxPool) BeginTxFunc(arg0 context.Context, arg1 pgx.TxOptions, arg2 func(pgx.Tx) error) error

BeginTxFunc mocks base method.

func (*MockPgxPool) Close

func (m *MockPgxPool) Close()

Close mocks base method.

func (*MockPgxPool) Config added in v1.3.0

func (m *MockPgxPool) Config() *pgxpool.Config

Config 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(arg0 context.Context, arg1 string, arg2 ...interface{}) (pgconn.CommandTag, error)

Exec mocks base method.

func (*MockPgxPool) Query

func (m *MockPgxPool) Query(arg0 context.Context, arg1 string, arg2 ...interface{}) (pgx.Rows, error)

Query mocks base method.

func (*MockPgxPool) QueryFunc

func (m *MockPgxPool) QueryFunc(arg0 context.Context, arg1 string, arg2, arg3 []interface{}, arg4 func(pgx.QueryFuncRow) error) (pgconn.CommandTag, error)

QueryFunc mocks base method.

func (*MockPgxPool) QueryRow

func (m *MockPgxPool) QueryRow(arg0 context.Context, arg1 string, arg2 ...interface{}) pgx.Row

QueryRow mocks base method.

func (*MockPgxPool) SendBatch

func (m *MockPgxPool) SendBatch(arg0 context.Context, arg1 *pgx.Batch) pgx.BatchResults

SendBatch mocks base method.

func (*MockPgxPool) Stat added in v1.3.0

func (m *MockPgxPool) Stat() *pgxpool.Stat

Stat mocks base method.

type MockPgxPoolMockRecorder

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

MockPgxPoolMockRecorder is the mock recorder for MockPgxPool.

func (*MockPgxPoolMockRecorder) Acquire added in v1.3.0

func (mr *MockPgxPoolMockRecorder) Acquire(arg0 interface{}) *gomock.Call

Acquire indicates an expected call of Acquire.

func (*MockPgxPoolMockRecorder) Begin

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

Begin indicates an expected call of Begin.

func (*MockPgxPoolMockRecorder) BeginFunc

func (mr *MockPgxPoolMockRecorder) BeginFunc(arg0, arg1 interface{}) *gomock.Call

BeginFunc indicates an expected call of BeginFunc.

func (*MockPgxPoolMockRecorder) BeginTx

func (mr *MockPgxPoolMockRecorder) BeginTx(arg0, arg1 interface{}) *gomock.Call

BeginTx indicates an expected call of BeginTx.

func (*MockPgxPoolMockRecorder) BeginTxFunc

func (mr *MockPgxPoolMockRecorder) BeginTxFunc(arg0, arg1, arg2 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) Config added in v1.3.0

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

Config indicates an expected call of Config.

func (*MockPgxPoolMockRecorder) Exec

func (mr *MockPgxPoolMockRecorder) Exec(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call

Exec indicates an expected call of Exec.

func (*MockPgxPoolMockRecorder) Query

func (mr *MockPgxPoolMockRecorder) Query(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call

Query indicates an expected call of Query.

func (*MockPgxPoolMockRecorder) QueryFunc

func (mr *MockPgxPoolMockRecorder) QueryFunc(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call

QueryFunc indicates an expected call of QueryFunc.

func (*MockPgxPoolMockRecorder) QueryRow

func (mr *MockPgxPoolMockRecorder) QueryRow(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call

QueryRow indicates an expected call of QueryRow.

func (*MockPgxPoolMockRecorder) SendBatch

func (mr *MockPgxPoolMockRecorder) SendBatch(arg0, arg1 interface{}) *gomock.Call

SendBatch indicates an expected call of SendBatch.

func (*MockPgxPoolMockRecorder) Stat added in v1.3.0

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

Stat indicates an expected call of Stat.

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