Files
2026-01-29 23:50:41 +01:00

101 lines
1.9 KiB
Go

package schema
import (
"context"
"log"
"os"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"database/sql"
"github.com/uptrace/bun"
"github.com/uptrace/bun/dialect/pgdialect"
"github.com/uptrace/bun/driver/pgdriver"
)
func GetTestDatabase() (*bun.DB, error) {
var err error
dsn := "postgres://kontor:kontor@localhost:5432/kontor?sslmode=disable"
sqldb := sql.OpenDB(pgdriver.NewConnector(pgdriver.WithDSN(dsn)))
sqldb.SetMaxOpenConns(4)
sqldb.SetMaxIdleConns(4)
DB := bun.NewDB(sqldb, pgdialect.New())
// DB.AddQueryHook(bundebug.NewQueryHook(bundebug.WithVerbose(true)))
if err = DB.Ping(); err != nil {
return nil, err
}
log.Println("Returned Database Connection")
return DB, nil
}
func TestMain(m *testing.M) {
log.Println("Setup Test")
exitCode := m.Run()
os.Exit(exitCode)
}
func TestSelectComics(t *testing.T) {
var comics []Comic
var err error
var db *bun.DB
ctx := context.Background()
db, err = GetTestDatabase()
require.NoError(t, err)
err = db.NewSelect().Model(&comics).Relation("Publisher").Scan(ctx)
if err != nil {
log.Fatal(err)
}
require.NoError(t, err)
assert.Equal(t, 168, len(comics))
}
func TestSelectPublishers(t *testing.T) {
var publishers []Publisher
var err error
var db *bun.DB
ctx := context.Background()
db, err = GetTestDatabase()
require.NoError(t, err)
err = db.NewSelect().Model(&publishers).Relation("ParentPublisher").Scan(ctx)
if err != nil {
log.Fatal(err)
}
require.NoError(t, err)
assert.Equal(t, 19, len(publishers))
}
func TestSelectWorkTypes(t *testing.T) {
var comic_works []ComicWork
var err error
var db *bun.DB
ctx := context.Background()
db, err = GetTestDatabase()
if err != nil {
log.Fatal(err)
}
err = db.NewSelect().Model(&comic_works).Relation("Comic").Relation("Artist").Relation("WorkType").Scan(ctx)
if err != nil {
log.Fatal(err)
}
require.NoError(t, err)
assert.Equal(t, 59, len(comic_works))
}