/gormtestutil

Utilities for writing unit-tests with Gorm

Primary LanguageGoMIT LicenseMIT

🦁 Gorm Test Utils

Go package GitHub GitHub go.mod Go version

Small utility functions for testing Gorm-related code. Such as sqlite database instantiation and wait groups with callbacks.

⬇️ Installation

go get github.com/ing-bank/gormtestutil

📋 Usage

Database Instantiation

package main

import (
	"testing"
	"github.com/ing-bank/gormtestutil"
)

func TestProductService_FetchAll_ReturnsAllProducts(t *testing.T) {
	// Arrange
    db := gormtestutil.NewMemoryDatabase(t,
		gormtestutil.WithName(t.Name()),
		gormtestutil.WithoutForeignKeys(),
		gormtestutil.WithSingularConnection())
	
    // [...]
}

Hooks

package main

import (
	"github.com/ing-bank/gormtestutil"
	"time"
	"testing"
)

func TestProductService_Create_CreatesProduct(t *testing.T) {
	// Arrange
	db := gormtestutil.NewMemoryDatabase(t)

	expectation := gormtestutil.ExpectCreated(t, db, Product{}, gormtestutil.WithCalls(1))

	// Act
	go Create(db, Product{Name: "Test"})

	// Assert
	gormtestutil.EnsureCompletion(t, expectation, gormtestutil.WithTimeout(30*time.Second))
}

🚀 Development

  1. Clone the repository
  2. Run make tools to install necessary tools
  3. Run make t to run unit tests
  4. Run make fmt to format code
  5. Run make lint to lint your code

You can run make to see a list of useful commands.

🔭 Future Plans

Nothing here yet!