101 lines
1.9 KiB
Go
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))
|
|
}
|