Add error case tests for scanRows() func

pull/2/head
Vinícius Garcia 2020-11-21 02:45:46 -03:00
parent b6f69d52aa
commit 7197f21c7e
2 changed files with 60 additions and 1 deletions

View File

@ -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
}

View File

@ -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 {