github.com/paulwerner/bookkeeper@v0.1.0/store/store_test.go (about)

     1  package store
     2  
     3  import (
     4  	"context"
     5  	"database/sql"
     6  	"log"
     7  	"os"
     8  	"path/filepath"
     9  	"testing"
    10  
    11  	"github.com/paulwerner/bookkeeper/infra"
    12  	"github.com/paulwerner/bookkeeper/ops"
    13  )
    14  
    15  var db *sql.DB
    16  
    17  func setWorkingDir() {
    18  	wd, _ := os.Getwd()
    19  	// go 1 directory up for migrations to be found
    20  	os.Chdir(filepath.Dir(wd))
    21  }
    22  
    23  func TestMain(m *testing.M) {
    24  	setWorkingDir()
    25  	ctx := context.Background()
    26  	container, database, err := infra.CreatePostgresTestContainer(ctx, "testdb")
    27  	if err != nil {
    28  		log.Fatal(err)
    29  	}
    30  	ops.RunMigrations(database)
    31  
    32  	db = database
    33  	errCode := m.Run()
    34  
    35  	err = database.Close()
    36  	if err != nil {
    37  		log.Printf("failed to close db connection: %s", err)
    38  	}
    39  
    40  	err = container.Terminate(ctx)
    41  	if err != nil {
    42  		log.Printf("failed to terminate the tet container: %s", err)
    43  	}
    44  
    45  	os.Exit(errCode)
    46  }