jet/tests/test_util.go

171 lines
3.4 KiB
Go
Raw Normal View History

2019-05-12 18:15:23 +02:00
package tests
import (
2019-06-05 17:56:24 +02:00
"github.com/go-jet/jet/sqlbuilder"
"github.com/go-jet/jet/tests/.test_files/dvd_rental/dvds/model"
"github.com/google/uuid"
2019-05-12 18:15:23 +02:00
"gotest.tools/assert"
"strings"
"testing"
"time"
)
func assertStatementSql(t *testing.T, query sqlbuilder.Statement, expectedQuery string, expectedArgs ...interface{}) {
2019-05-12 18:15:23 +02:00
_, args, err := query.Sql()
assert.NilError(t, err)
//assert.Equal(t, queryStr, expectedQuery)
assert.DeepEqual(t, args, expectedArgs)
debuqSql, err := query.DebugSql()
assert.NilError(t, err)
2019-05-20 17:37:55 +02:00
assert.Equal(t, debuqSql, expectedQuery)
2019-05-12 18:15:23 +02:00
}
func assertExec(t *testing.T, stmt sqlbuilder.Statement, rowsAffected int64) {
res, err := stmt.Exec(db)
assert.NilError(t, err)
rows, err := res.RowsAffected()
assert.NilError(t, err)
assert.Equal(t, rows, rowsAffected)
}
func assertExecErr(t *testing.T, stmt sqlbuilder.Statement, errorStr string) {
_, err := stmt.Exec(db)
assert.Equal(t, err.Error(), errorStr)
}
func boolPtr(b bool) *bool {
return &b
}
2019-05-12 18:15:23 +02:00
func int16Ptr(i int16) *int16 {
return &i
}
func int32Ptr(i int32) *int32 {
return &i
}
func int64Ptr(i int64) *int64 {
return &i
}
2019-05-12 18:15:23 +02:00
func stringPtr(s string) *string {
return &s
}
func byteArrayPtr(arr []byte) *[]byte {
return &arr
}
func float32Ptr(f float32) *float32 {
return &f
}
func float64Ptr(f float64) *float64 {
return &f
}
func uuidPtr(u string) *uuid.UUID {
uuid := uuid.MustParse(u)
return &uuid
}
func timeWithoutTimeZone(t string) *time.Time {
time, err := time.Parse("15:04:05", t)
if err != nil {
panic(err)
}
return &time
}
func timeWithTimeZone(t string) *time.Time {
time, err := time.Parse("15:04:05 -0700", t)
if err != nil {
panic(err)
}
return &time
}
func timestampWithoutTimeZone(t string, precision int) *time.Time {
2019-05-12 18:15:23 +02:00
precisionStr := ""
if precision > 0 {
precisionStr = "." + strings.Repeat("9", precision)
}
time, err := time.Parse("2006-01-02 15:04:05"+precisionStr+" +0000", t+" +0000")
if err != nil {
panic(err)
}
return &time
}
func timestampWithTimeZone(t string, precision int) *time.Time {
precisionStr := ""
if precision > 0 {
precisionStr = "." + strings.Repeat("9", precision)
}
time, err := time.Parse("2006-01-02 15:04:05"+precisionStr+" -0700 MST", t)
if err != nil {
panic(err)
}
return &time
}
func M3(a, b, c interface{}) []interface{} {
return []interface{}{a, b, c}
}
2019-05-12 18:15:23 +02:00
var customer0 = model.Customer{
CustomerID: 1,
StoreID: 1,
FirstName: "Mary",
LastName: "Smith",
Email: stringPtr("mary.smith@sakilacustomer.org"),
2019-05-20 17:37:55 +02:00
AddressID: 5,
2019-05-12 18:15:23 +02:00
Activebool: true,
CreateDate: *timestampWithoutTimeZone("2006-02-14 00:00:00", 0),
LastUpdate: timestampWithoutTimeZone("2013-05-26 14:49:45.738", 3),
2019-05-12 18:15:23 +02:00
Active: int32Ptr(1),
}
var customer1 = model.Customer{
CustomerID: 2,
StoreID: 1,
FirstName: "Patricia",
LastName: "Johnson",
Email: stringPtr("patricia.johnson@sakilacustomer.org"),
2019-05-20 17:37:55 +02:00
AddressID: 6,
2019-05-12 18:15:23 +02:00
Activebool: true,
CreateDate: *timestampWithoutTimeZone("2006-02-14 00:00:00", 0),
LastUpdate: timestampWithoutTimeZone("2013-05-26 14:49:45.738", 3),
2019-05-12 18:15:23 +02:00
Active: int32Ptr(1),
}
var lastCustomer = model.Customer{
CustomerID: 599,
StoreID: 2,
FirstName: "Austin",
LastName: "Cintron",
Email: stringPtr("austin.cintron@sakilacustomer.org"),
2019-05-20 17:37:55 +02:00
AddressID: 605,
2019-05-12 18:15:23 +02:00
Activebool: true,
CreateDate: *timestampWithoutTimeZone("2006-02-14 00:00:00", 0),
LastUpdate: timestampWithoutTimeZone("2013-05-26 14:49:45.738", 3),
2019-05-12 18:15:23 +02:00
Active: int32Ptr(1),
}