github.com/angryronald/go-kit@v0.0.0-20240505173814-ff2bd9c79dbf/generic/repository/sql/repositorytest/main_test.go (about)

     1  package repositorytest
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  
     7  	"gorm.io/gorm"
     8  
     9  	_ "github.com/lib/pq"
    10  	"github.com/ory/dockertest"
    11  	"github.com/sirupsen/logrus"
    12  
    13  	"github.com/angryronald/go-kit/test/docker/postgres"
    14  )
    15  
    16  var db *gorm.DB
    17  
    18  func TestMain(m *testing.M) {
    19  	pool, err := dockertest.NewPool("")
    20  	if err != nil {
    21  		logrus.Fatalf("Could not connect to Docker: %s\n", err)
    22  	}
    23  
    24  	var postgresResource *dockertest.Resource
    25  	db, postgresResource = postgres.GenerateInstance(pool)
    26  	if db != nil {
    27  		logrus.Debugf("Success generate postgres instance\n")
    28  	}
    29  
    30  	db.AutoMigrate(&TestModel{})
    31  	db.AutoMigrate(&ImmutableTestModel{})
    32  
    33  	code := m.Run() // execute all the tests
    34  
    35  	// Delete the Docker container
    36  	if err := pool.Purge(postgresResource); err != nil {
    37  		logrus.Fatalf("Could not purge postgres resource: %s\n", err)
    38  	}
    39  
    40  	defer os.Exit(code)
    41  }