Clean up the reflect tests.
This commit is contained in:
parent
f6323d5ebe
commit
de7ba2fa8e
1 changed files with 125 additions and 149 deletions
|
@ -266,6 +266,76 @@ func TestPtrFromMapping(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestValuesFromMapping(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
type NestedPtrs struct {
|
||||
Int int
|
||||
IntP *int
|
||||
NestedPtrsP *NestedPtrs
|
||||
}
|
||||
|
||||
val := &NestedPtrs{
|
||||
Int: 5,
|
||||
IntP: new(int),
|
||||
NestedPtrsP: &NestedPtrs{
|
||||
Int: 6,
|
||||
IntP: new(int),
|
||||
},
|
||||
}
|
||||
|
||||
mapping := []uint64{testMakeMapping(0), testMakeMapping(1), testMakeMapping(2, 0), testMakeMapping(2, 1)}
|
||||
v := ValuesFromMapping(reflect.Indirect(reflect.ValueOf(val)), mapping)
|
||||
|
||||
if got := v[0].(int); got != 5 {
|
||||
t.Error("flat int was wrong:", got)
|
||||
}
|
||||
if got := v[1].(int); got != 0 {
|
||||
t.Error("flat pointer was wrong:", got)
|
||||
}
|
||||
if got := v[2].(int); got != 6 {
|
||||
t.Error("nested int was wrong:", got)
|
||||
}
|
||||
if got := v[3].(int); got != 0 {
|
||||
t.Error("nested pointer was wrong:", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPtrsFromMapping(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
type NestedPtrs struct {
|
||||
Int int
|
||||
IntP *int
|
||||
NestedPtrsP *NestedPtrs
|
||||
}
|
||||
|
||||
val := &NestedPtrs{
|
||||
Int: 5,
|
||||
IntP: new(int),
|
||||
NestedPtrsP: &NestedPtrs{
|
||||
Int: 6,
|
||||
IntP: new(int),
|
||||
},
|
||||
}
|
||||
|
||||
mapping := []uint64{testMakeMapping(0), testMakeMapping(1), testMakeMapping(2, 0), testMakeMapping(2, 1)}
|
||||
v := PtrsFromMapping(reflect.Indirect(reflect.ValueOf(val)), mapping)
|
||||
|
||||
if got := *v[0].(*int); got != 5 {
|
||||
t.Error("flat int was wrong:", got)
|
||||
}
|
||||
if got := *v[1].(*int); got != 0 {
|
||||
t.Error("flat pointer was wrong:", got)
|
||||
}
|
||||
if got := *v[2].(*int); got != 6 {
|
||||
t.Error("nested int was wrong:", got)
|
||||
}
|
||||
if got := *v[3].(*int); got != 0 {
|
||||
t.Error("nested pointer was wrong:", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetBoilTag(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
@ -457,153 +527,59 @@ func TestBind_InnerJoin(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
// func TestBind_InnerJoinSelect(t *testing.T) {
|
||||
// t.Parallel()
|
||||
//
|
||||
// testResults := []*struct {
|
||||
// Happy struct {
|
||||
// ID int
|
||||
// } `boil:"h,bind"`
|
||||
// Fun struct {
|
||||
// ID int
|
||||
// } `boil:",bind"`
|
||||
// }{}
|
||||
//
|
||||
// query := &Query{
|
||||
// selectCols: []string{"fun.id", "h.id"},
|
||||
// from: []string{"fun"},
|
||||
// joins: []join{{kind: JoinInner, clause: "happy as h on fun.happy_id = h.id"}},
|
||||
// }
|
||||
//
|
||||
// db, mock, err := sqlmock.New()
|
||||
// if err != nil {
|
||||
// t.Error(err)
|
||||
// }
|
||||
//
|
||||
// ret := sqlmock.NewRows([]string{"fun.id", "h.id"})
|
||||
// ret.AddRow(driver.Value(int64(10)), driver.Value(int64(11)))
|
||||
// ret.AddRow(driver.Value(int64(12)), driver.Value(int64(13)))
|
||||
// mock.ExpectQuery(`SELECT "fun"."id" as "fun.id", "h"."id" as "h.id" FROM "fun" INNER JOIN happy as h on fun.happy_id = h.id;`).WillReturnRows(ret)
|
||||
//
|
||||
// SetExecutor(query, db)
|
||||
// err = query.Bind(&testResults)
|
||||
// if err != nil {
|
||||
// t.Error(err)
|
||||
// }
|
||||
//
|
||||
// if len(testResults) != 2 {
|
||||
// t.Fatal("wrong number of results:", len(testResults))
|
||||
// }
|
||||
// if id := testResults[0].Happy.ID; id != 11 {
|
||||
// t.Error("wrong ID:", id)
|
||||
// }
|
||||
// if id := testResults[0].Fun.ID; id != 10 {
|
||||
// t.Error("wrong ID:", id)
|
||||
// }
|
||||
//
|
||||
// if id := testResults[1].Happy.ID; id != 13 {
|
||||
// t.Error("wrong ID:", id)
|
||||
// }
|
||||
// if id := testResults[1].Fun.ID; id != 12 {
|
||||
// t.Error("wrong ID:", id)
|
||||
// }
|
||||
//
|
||||
// if err := mock.ExpectationsWereMet(); err != nil {
|
||||
// t.Error(err)
|
||||
// }
|
||||
// }
|
||||
func TestBind_InnerJoinSelect(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
// func TestBindPtrs_Easy(t *testing.T) {
|
||||
// t.Parallel()
|
||||
//
|
||||
// testStruct := struct {
|
||||
// ID int `boil:"identifier"`
|
||||
// Date time.Time
|
||||
// }{}
|
||||
//
|
||||
// cols := []string{"identifier", "date"}
|
||||
// ptrs, err := bindPtrs(&testStruct, nil, cols...)
|
||||
// if err != nil {
|
||||
// t.Error(err)
|
||||
// }
|
||||
//
|
||||
// if ptrs[0].(*int) != &testStruct.ID {
|
||||
// t.Error("id is the wrong pointer")
|
||||
// }
|
||||
// if ptrs[1].(*time.Time) != &testStruct.Date {
|
||||
// t.Error("id is the wrong pointer")
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// func TestBindPtrs_Recursive(t *testing.T) {
|
||||
// t.Parallel()
|
||||
//
|
||||
// testStruct := struct {
|
||||
// Happy struct {
|
||||
// ID int `boil:"identifier"`
|
||||
// }
|
||||
// Fun struct {
|
||||
// ID int
|
||||
// } `boil:",bind"`
|
||||
// }{}
|
||||
//
|
||||
// cols := []string{"id", "fun.id"}
|
||||
// ptrs, err := bindPtrs(&testStruct, nil, cols...)
|
||||
// if err != nil {
|
||||
// t.Error(err)
|
||||
// }
|
||||
//
|
||||
// if ptrs[0].(*int) != &testStruct.Fun.ID {
|
||||
// t.Error("id is the wrong pointer")
|
||||
// }
|
||||
// if ptrs[1].(*int) != &testStruct.Fun.ID {
|
||||
// t.Error("id is the wrong pointer")
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// func TestBindPtrs_RecursiveTags(t *testing.T) {
|
||||
// t.Parallel()
|
||||
//
|
||||
// testStruct := struct {
|
||||
// Happy struct {
|
||||
// ID int `boil:"identifier"`
|
||||
// } `boil:",bind"`
|
||||
// Fun struct {
|
||||
// ID int `boil:"identification"`
|
||||
// } `boil:",bind"`
|
||||
// }{}
|
||||
//
|
||||
// cols := []string{"happy.identifier", "fun.identification"}
|
||||
// ptrs, err := bindPtrs(&testStruct, nil, cols...)
|
||||
// if err != nil {
|
||||
// t.Error(err)
|
||||
// }
|
||||
//
|
||||
// if ptrs[0].(*int) != &testStruct.Happy.ID {
|
||||
// t.Error("id is the wrong pointer")
|
||||
// }
|
||||
// if ptrs[1].(*int) != &testStruct.Fun.ID {
|
||||
// t.Error("id is the wrong pointer")
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// func TestBindPtrs_Ignore(t *testing.T) {
|
||||
// t.Parallel()
|
||||
//
|
||||
// testStruct := struct {
|
||||
// ID int `boil:"-"`
|
||||
// Happy struct {
|
||||
// ID int
|
||||
// } `boil:",bind"`
|
||||
// }{}
|
||||
//
|
||||
// cols := []string{"id"}
|
||||
// ptrs, err := bindPtrs(&testStruct, nil, cols...)
|
||||
// if err != nil {
|
||||
// t.Error(err)
|
||||
// }
|
||||
//
|
||||
// if ptrs[0].(*int) != &testStruct.Happy.ID {
|
||||
// t.Error("id is the wrong pointer")
|
||||
// }
|
||||
// }
|
||||
testResults := []*struct {
|
||||
Happy struct {
|
||||
ID int
|
||||
} `boil:"h,bind"`
|
||||
Fun struct {
|
||||
ID int
|
||||
} `boil:",bind"`
|
||||
}{}
|
||||
|
||||
query := &Query{
|
||||
dialect: &Dialect{LQ: '"', RQ: '"', IndexPlaceholders: true},
|
||||
selectCols: []string{"fun.id", "h.id"},
|
||||
from: []string{"fun"},
|
||||
joins: []join{{kind: JoinInner, clause: "happy as h on fun.happy_id = h.id"}},
|
||||
}
|
||||
|
||||
db, mock, err := sqlmock.New()
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
ret := sqlmock.NewRows([]string{"fun.id", "h.id"})
|
||||
ret.AddRow(driver.Value(int64(10)), driver.Value(int64(11)))
|
||||
ret.AddRow(driver.Value(int64(12)), driver.Value(int64(13)))
|
||||
mock.ExpectQuery(`SELECT "fun"."id" as "fun.id", "h"."id" as "h.id" FROM "fun" INNER JOIN happy as h on fun.happy_id = h.id;`).WillReturnRows(ret)
|
||||
|
||||
SetExecutor(query, db)
|
||||
err = query.Bind(&testResults)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
if len(testResults) != 2 {
|
||||
t.Fatal("wrong number of results:", len(testResults))
|
||||
}
|
||||
if id := testResults[0].Happy.ID; id != 11 {
|
||||
t.Error("wrong ID:", id)
|
||||
}
|
||||
if id := testResults[0].Fun.ID; id != 10 {
|
||||
t.Error("wrong ID:", id)
|
||||
}
|
||||
|
||||
if id := testResults[1].Happy.ID; id != 13 {
|
||||
t.Error("wrong ID:", id)
|
||||
}
|
||||
if id := testResults[1].Fun.ID; id != 12 {
|
||||
t.Error("wrong ID:", id)
|
||||
}
|
||||
|
||||
if err := mock.ExpectationsWereMet(); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue