Tests clean up.
This commit is contained in:
parent
ffba8718ca
commit
367602757f
20 changed files with 46932 additions and 178 deletions
13
tests/dbconfig/dbconfig.go
Normal file
13
tests/dbconfig/dbconfig.go
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
package dbconfig
|
||||
|
||||
import "fmt"
|
||||
|
||||
const (
|
||||
Host = "localhost"
|
||||
Port = 5432
|
||||
User = "postgres"
|
||||
Password = "postgres"
|
||||
DBName = "dvd_rental"
|
||||
)
|
||||
|
||||
var ConnectString = fmt.Sprintf("host=%s port=%d user=%s "+"password=%s dbname=%s sslmode=disable", Host, Port, User, Password, DBName)
|
||||
46553
tests/init/data/dvds.sql
Normal file
46553
tests/init/data/dvds.sql
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,4 +1,6 @@
|
|||
|
||||
-- AllTypes table -----------------------------
|
||||
|
||||
DROP TABLE IF EXISTS test_sample.all_types;
|
||||
|
||||
CREATE TABLE test_sample.all_types
|
||||
|
|
@ -135,4 +137,55 @@ VALUES (1, 1, 300, 300, 50000, 5000, 11.44, 11.44, 55.77, 55.77, 99.1, 99.1, 111
|
|||
NULL, '{1, 2, 3}', NULL, '{"breakfast", "consulting"}', ARRAY['{"a": 1, "b": 2}'::jsonb, '{"a":3, "b": 4}'::jsonb], NULL, '{{"meeting", "lunch"}, {"training", "presentation"}}')
|
||||
;
|
||||
|
||||
-- Link table --------------------
|
||||
|
||||
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)
|
||||
);
|
||||
|
||||
|
||||
-- Employee table ---------------
|
||||
|
||||
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);
|
||||
|
||||
|
||||
-- Person table ------------------
|
||||
|
||||
DROP TABLE IF EXISTS test_sample.person;
|
||||
|
||||
CREATE TABLE test_sample.person(
|
||||
person_id uuid,
|
||||
first_name varchar(100),
|
||||
last_name varchar(100)
|
||||
)
|
||||
60
tests/init/init.go
Normal file
60
tests/init/init.go
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"github.com/go-jet/jet/generator"
|
||||
"github.com/go-jet/jet/tests/dbconfig"
|
||||
"io/ioutil"
|
||||
)
|
||||
|
||||
func main() {
|
||||
db, err := sql.Open("postgres", dbconfig.ConnectString)
|
||||
if err != nil {
|
||||
panic("Failed to connect to test db")
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
testSampleSql, err := ioutil.ReadFile("./init/data/test_sample.sql")
|
||||
|
||||
panicOnError(err)
|
||||
|
||||
_, err = db.Exec(string(testSampleSql))
|
||||
|
||||
panicOnError(err)
|
||||
|
||||
dvdsSql, err := ioutil.ReadFile("./init/data/dvds.sql")
|
||||
|
||||
panicOnError(err)
|
||||
|
||||
_, err = db.Exec(string(dvdsSql))
|
||||
|
||||
panicOnError(err)
|
||||
|
||||
err = generator.Generate("./.test_files", generator.GeneratorData{
|
||||
Host: dbconfig.Host,
|
||||
Port: "5432",
|
||||
User: dbconfig.User,
|
||||
Password: dbconfig.Password,
|
||||
DBName: dbconfig.DBName,
|
||||
SchemaName: "dvds",
|
||||
})
|
||||
|
||||
panicOnError(err)
|
||||
|
||||
err = generator.Generate("./.test_files", generator.GeneratorData{
|
||||
Host: dbconfig.Host,
|
||||
Port: "5432",
|
||||
User: dbconfig.User,
|
||||
Password: dbconfig.Password,
|
||||
DBName: dbconfig.DBName,
|
||||
SchemaName: "test_sample",
|
||||
})
|
||||
|
||||
panicOnError(err)
|
||||
}
|
||||
|
||||
func panicOnError(err error) {
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
|
@ -3,20 +3,20 @@ package tests
|
|||
import (
|
||||
"fmt"
|
||||
"github.com/davecgh/go-spew/spew"
|
||||
"github.com/go-jet/jet/sqlbuilder"
|
||||
. "github.com/go-jet/jet/sqlbuilder"
|
||||
"github.com/go-jet/jet/tests/.test_files/dvd_rental/test_sample/model"
|
||||
"github.com/go-jet/jet/tests/.test_files/dvd_rental/test_sample/table"
|
||||
. "github.com/go-jet/jet/tests/.test_files/dvd_rental/test_sample/table"
|
||||
"gotest.tools/assert"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestInsertValues(t *testing.T) {
|
||||
insertQuery := table.Link.INSERT(table.Link.URL, table.Link.Name, table.Link.Rel).
|
||||
VALUES("http://www.postgresqltutorial.com", "PostgreSQL Tutorial", sqlbuilder.DEFAULT).
|
||||
VALUES("http://www.google.com", "Google", sqlbuilder.DEFAULT).
|
||||
VALUES("http://www.yahoo.com", "Yahoo", sqlbuilder.DEFAULT).
|
||||
VALUES("http://www.bing.com", "Bing", sqlbuilder.DEFAULT).
|
||||
RETURNING(table.Link.ID)
|
||||
insertQuery := Link.INSERT(Link.URL, Link.Name, Link.Rel).
|
||||
VALUES("http://www.postgresqltutorial.com", "PostgreSQL Tutorial", DEFAULT).
|
||||
VALUES("http://www.google.com", "Google", DEFAULT).
|
||||
VALUES("http://www.yahoo.com", "Yahoo", DEFAULT).
|
||||
VALUES("http://www.bing.com", "Bing", DEFAULT).
|
||||
RETURNING(Link.ID)
|
||||
|
||||
insertQueryStr, args, err := insertQuery.Sql()
|
||||
|
||||
|
|
@ -44,7 +44,7 @@ RETURNING link.id AS "link.id";
|
|||
|
||||
link := []model.Link{}
|
||||
|
||||
err = table.Link.SELECT(table.Link.AllColumns).Query(db, &link)
|
||||
err = Link.SELECT(Link.AllColumns).Query(db, &link)
|
||||
|
||||
assert.NilError(t, err)
|
||||
|
||||
|
|
@ -72,9 +72,9 @@ func TestInsertDataObject(t *testing.T) {
|
|||
Rel: nil,
|
||||
}
|
||||
|
||||
query := table.Link.
|
||||
INSERT(table.Link.URL, table.Link.Name).
|
||||
VALUES_MAPPING(linkData)
|
||||
query := Link.
|
||||
INSERT(Link.URL, Link.Name).
|
||||
MODEL(linkData)
|
||||
|
||||
queryStr, args, err := query.Sql()
|
||||
|
||||
|
|
@ -92,14 +92,14 @@ func TestInsertDataObject(t *testing.T) {
|
|||
|
||||
func TestInsertQuery(t *testing.T) {
|
||||
|
||||
_, err := table.Link.INSERT(table.Link.URL, table.Link.Name).
|
||||
_, err := Link.INSERT(Link.URL, Link.Name).
|
||||
VALUES("http://www.postgresqltutorial.com", "PostgreSQL Tutorial").Execute(db)
|
||||
|
||||
assert.NilError(t, err)
|
||||
|
||||
query := table.Link.
|
||||
INSERT(table.Link.URL, table.Link.Name).
|
||||
QUERY(table.Link.SELECT(table.Link.URL, table.Link.Name))
|
||||
query := Link.
|
||||
INSERT(Link.URL, Link.Name).
|
||||
QUERY(Link.SELECT(Link.URL, Link.Name))
|
||||
|
||||
queryStr, args, err := query.Sql()
|
||||
|
||||
|
|
@ -113,7 +113,7 @@ func TestInsertQuery(t *testing.T) {
|
|||
assert.NilError(t, err)
|
||||
|
||||
allLinks := []model.Link{}
|
||||
err = table.Link.SELECT(table.Link.AllColumns).Query(db, &allLinks)
|
||||
err = Link.SELECT(Link.AllColumns).Query(db, &allLinks)
|
||||
assert.NilError(t, err)
|
||||
|
||||
spew.Dump(allLinks)
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ package tests
|
|||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"github.com/go-jet/jet/tests/.test_files/dvd_rental/dvds/model"
|
||||
"github.com/go-jet/jet/tests/dbconfig"
|
||||
_ "github.com/lib/pq"
|
||||
"github.com/pkg/profile"
|
||||
"gotest.tools/assert"
|
||||
|
|
@ -12,103 +12,23 @@ import (
|
|||
"testing"
|
||||
)
|
||||
|
||||
const (
|
||||
host = "localhost"
|
||||
port = 5432
|
||||
user = "postgres"
|
||||
password = "postgres"
|
||||
dbname = "dvd_rental"
|
||||
)
|
||||
|
||||
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
|
||||
|
||||
//var tx *sql.Tx
|
||||
|
||||
//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
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
fmt.Println("Begin")
|
||||
|
||||
defer profile.Start().Stop()
|
||||
|
||||
var err error
|
||||
db, err = sql.Open("postgres", connectString)
|
||||
db, err = sql.Open("postgres", dbconfig.ConnectString)
|
||||
if err != nil {
|
||||
panic("Failed to connect to test db")
|
||||
}
|
||||
//tx, _ = db.Begin()
|
||||
defer cleanUp()
|
||||
|
||||
dbInit()
|
||||
defer db.Close()
|
||||
|
||||
ret := m.Run()
|
||||
|
||||
cleanUp()
|
||||
fmt.Println("END")
|
||||
|
||||
os.Exit(ret)
|
||||
}
|
||||
|
||||
func cleanUp() {
|
||||
fmt.Println("CLEAN UP")
|
||||
|
||||
//tx.Rollback()
|
||||
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)
|
||||
);
|
||||
|
||||
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);
|
||||
|
||||
`
|
||||
|
||||
result, err := db.Exec(linkTableCreate)
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
fmt.Println(result)
|
||||
|
||||
}
|
||||
|
||||
func TestGenerateModel(t *testing.T) {
|
||||
|
||||
actor := model.Actor{}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,18 @@ func TestAllTypesSelect(t *testing.T) {
|
|||
assert.DeepEqual(t, dest[1], allTypesRow1)
|
||||
}
|
||||
|
||||
func TestAllTypesInsert(t *testing.T) {
|
||||
query := AllTypes.INSERT(AllTypes.AllColumns...).
|
||||
MODEL(allTypesRow0).
|
||||
MODEL(&allTypesRow1)
|
||||
|
||||
_, err := query.Execute(db)
|
||||
|
||||
assert.NilError(t, err)
|
||||
|
||||
fmt.Println(query.DebugSql())
|
||||
}
|
||||
|
||||
func TestExpressionOperators(t *testing.T) {
|
||||
query := AllTypes.SELECT(
|
||||
AllTypes.Integer.IS_NULL(),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue