mirror of https://github.com/VinGarcia/ksql.git
Add error case tests for scanRows() func
parent
b6f69d52aa
commit
7197f21c7e
|
@ -532,7 +532,7 @@ func parseInputFunc(fn interface{}) (reflect.Type, error) {
|
|||
}
|
||||
|
||||
func scanRows(rows *sql.Rows, record interface{}) error {
|
||||
names, err := rows.Columns() // rows.QueryContext(ctx, query string, args ...interface{}) (*Rows, error)
|
||||
names, err := rows.Columns()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package kissorm
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
|
@ -853,6 +854,64 @@ func TestScanRows(t *testing.T) {
|
|||
assert.Equal(t, "User2", u.Name)
|
||||
assert.Equal(t, 14, u.Age)
|
||||
})
|
||||
|
||||
t.Run("should report error for closed rows", func(t *testing.T) {
|
||||
err := createTable()
|
||||
if err != nil {
|
||||
t.Fatal("could not create test table!")
|
||||
}
|
||||
|
||||
ctx := context.TODO()
|
||||
db := connectDB(t)
|
||||
defer db.Close()
|
||||
|
||||
rows, err := db.DB().QueryContext(ctx, "select * from users where name='User2'")
|
||||
assert.Equal(t, nil, err)
|
||||
|
||||
var u User
|
||||
err = rows.Close()
|
||||
assert.Equal(t, nil, err)
|
||||
err = scanRows(rows, &u)
|
||||
assert.NotEqual(t, nil, err)
|
||||
})
|
||||
|
||||
t.Run("should report if record is not a pointer", func(t *testing.T) {
|
||||
err := createTable()
|
||||
if err != nil {
|
||||
t.Fatal("could not create test table!")
|
||||
}
|
||||
|
||||
ctx := context.TODO()
|
||||
db := connectDB(t)
|
||||
defer db.Close()
|
||||
|
||||
rows, err := db.DB().QueryContext(ctx, "select * from users where name='User2'")
|
||||
assert.Equal(t, nil, err)
|
||||
|
||||
var u User
|
||||
err = scanRows(rows, u)
|
||||
assert.NotEqual(t, nil, err)
|
||||
})
|
||||
|
||||
t.Run("should report if record is not a pointer to struct", func(t *testing.T) {
|
||||
err := createTable()
|
||||
if err != nil {
|
||||
t.Fatal("could not create test table!")
|
||||
}
|
||||
|
||||
ctx := context.TODO()
|
||||
db := connectDB(t)
|
||||
defer db.Close()
|
||||
|
||||
rows, err := db.DB().QueryContext(ctx, "select * from users where name='User2'")
|
||||
assert.Equal(t, nil, err)
|
||||
|
||||
var u map[string]interface{}
|
||||
fmt.Println("before scan")
|
||||
err = scanRows(rows, &u)
|
||||
fmt.Println("after scan")
|
||||
assert.NotEqual(t, nil, err)
|
||||
})
|
||||
}
|
||||
|
||||
func createTable() error {
|
||||
|
|
Loading…
Reference in New Issue