jet/tests/main_test.go

141 lines
3.2 KiB
Go
Raw Normal View History

2019-04-07 09:58:12 +02:00
package tests
import (
"database/sql"
"fmt"
2019-04-14 17:55:10 +02:00
_ "github.com/lib/pq"
2019-05-20 17:37:55 +02:00
"github.com/pkg/profile"
2019-05-24 13:13:13 +02:00
"github.com/sub0zero/go-sqlbuilder/tests/.test_files/dvd_rental/dvds/model"
2019-05-01 18:23:19 +02:00
"gotest.tools/assert"
2019-04-07 09:58:12 +02:00
"os"
2019-05-24 13:13:13 +02:00
"reflect"
2019-04-07 09:58:12 +02:00
"testing"
)
const (
2019-05-24 13:13:13 +02:00
host = "localhost"
port = 5432
user = "postgres"
password = "postgres"
dbname = "dvd_rental"
2019-04-07 09:58:12 +02:00
)
var connectString = fmt.Sprintf("host=%s port=%d user=%s "+"password=%s dbname=%s sslmode=disable", host, port, user, password, dbname)
var db *sql.DB
2019-04-14 17:55:10 +02:00
//var tx *sql.Tx
2019-04-07 09:58:12 +02:00
2019-05-24 13:13:13 +02:00
//go:generate generator -host=localhost -port=5432 -user=postgres -password=postgres -dbname=dvd_rental -schema dvds -path .test_files
//go:generate generator -host=localhost -port=5432 -user=postgres -password=postgres -dbname=dvd_rental -sslmode=disable -schema test_sample -path .test_files
2019-04-07 09:58:12 +02:00
func TestMain(m *testing.M) {
fmt.Println("Begin")
2019-05-20 17:37:55 +02:00
defer profile.Start().Stop()
2019-04-07 09:58:12 +02:00
var err error
db, err = sql.Open("postgres", connectString)
if err != nil {
panic("Failed to connect to test db")
}
2019-04-14 17:55:10 +02:00
//tx, _ = db.Begin()
2019-04-07 09:58:12 +02:00
defer cleanUp()
dbInit()
ret := m.Run()
cleanUp()
fmt.Println("END")
os.Exit(ret)
}
func cleanUp() {
fmt.Println("CLEAN UP")
2019-04-14 17:55:10 +02:00
//tx.Rollback()
2019-04-07 09:58:12 +02:00
db.Close()
}
func dbInit() {
linkTableCreate := `
DROP TABLE IF EXISTS test_sample.link;
CREATE TABLE IF NOT EXISTS test_sample.link (
ID serial PRIMARY KEY,
url VARCHAR (255) NOT NULL,
name VARCHAR (255) NOT NULL,
description VARCHAR (255),
rel VARCHAR (50)
2019-05-20 17:37:55 +02:00
);
DROP TABLE IF EXISTS test_sample.employee;
CREATE TABLE test_sample.employee (
employee_id INT PRIMARY KEY,
first_name VARCHAR (255) NOT NULL,
last_name VARCHAR (255) NOT NULL,
manager_id INT,
FOREIGN KEY (manager_id)
REFERENCES test_sample.employee (employee_id)
ON DELETE CASCADE
);
INSERT INTO test_sample.employee (
employee_id,
first_name,
last_name,
manager_id
)
VALUES
(1, 'Windy', 'Hays', NULL),
(2, 'Ava', 'Christensen', 1),
(3, 'Hassan', 'Conner', 1),
(4, 'Anna', 'Reeves', 2),
(5, 'Sau', 'Norman', 2),
(6, 'Kelsie', 'Hays', 3),
(7, 'Tory', 'Goff', 3),
(8, 'Salley', 'Lester', 3);
`
2019-04-07 09:58:12 +02:00
result, err := db.Exec(linkTableCreate)
if err != nil {
panic(err)
}
fmt.Println(result)
}
2019-05-01 18:23:19 +02:00
2019-05-24 13:13:13 +02:00
func TestGenerateModel(t *testing.T) {
2019-05-20 17:37:55 +02:00
2019-05-24 13:13:13 +02:00
actor := model.Actor{}
2019-05-20 17:37:55 +02:00
2019-05-24 13:13:13 +02:00
assert.Equal(t, reflect.TypeOf(actor.ActorID).String(), "int32")
actorIDField, ok := reflect.TypeOf(actor).FieldByName("ActorID")
assert.Assert(t, ok)
assert.Equal(t, actorIDField.Tag.Get("sql"), "unique")
assert.Equal(t, reflect.TypeOf(actor.FirstName).String(), "string")
assert.Equal(t, reflect.TypeOf(actor.LastName).String(), "string")
assert.Equal(t, reflect.TypeOf(actor.LastUpdate).String(), "time.Time")
2019-05-20 17:37:55 +02:00
2019-05-24 13:13:13 +02:00
filmActor := model.FilmActor{}
2019-05-20 17:37:55 +02:00
2019-05-24 13:13:13 +02:00
assert.Equal(t, reflect.TypeOf(filmActor.FilmID).String(), "int16")
filmIDField, ok := reflect.TypeOf(filmActor).FieldByName("FilmID")
assert.Assert(t, ok)
assert.Equal(t, filmIDField.Tag.Get("sql"), "unique")
2019-05-01 18:23:19 +02:00
2019-05-24 13:13:13 +02:00
assert.Equal(t, reflect.TypeOf(filmActor.ActorID).String(), "int16")
actorIDField, ok = reflect.TypeOf(filmActor).FieldByName("ActorID")
assert.Assert(t, ok)
assert.Equal(t, filmIDField.Tag.Get("sql"), "unique")
2019-05-01 18:23:19 +02:00
2019-05-24 13:13:13 +02:00
staff := model.Staff{}
2019-05-01 18:23:19 +02:00
2019-05-24 13:13:13 +02:00
assert.Equal(t, reflect.TypeOf(staff.Email).String(), "*string")
assert.Equal(t, reflect.TypeOf(staff.Picture).String(), "*[]uint8")
2019-05-01 18:23:19 +02:00
}