From 35c0d3c10bef576babf8d426acc68df264dc4bbd Mon Sep 17 00:00:00 2001 From: Ajitem Sahasrabuddhe Date: Sun, 30 May 2021 13:15:32 +0530 Subject: [PATCH 1/4] add dependency to go.mod --- go.mod | 4 ++++ go.sum | 2 ++ 2 files changed, 6 insertions(+) create mode 100644 go.sum diff --git a/go.mod b/go.mod index eaf8a5a..2c288f8 100644 --- a/go.mod +++ b/go.mod @@ -1 +1,5 @@ module github.com/DATA-DOG/go-sqlmock + +go 1.16 + +require github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..a21f637 --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 h1:veS9QfglfvqAw2e+eeNT/SbGySq8ajECXJ9e4fPoLhY= +github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46/go.mod h1:yyMNCyc/Ib3bDTKd379tNMpB/7/H5TjM2Y9QJ5THLbE= From 2df2d8867c69b8c31a0a98e0f7984e5d4e3ea149 Mon Sep 17 00:00:00 2001 From: Ajitem Sahasrabuddhe Date: Sun, 30 May 2021 13:15:50 +0530 Subject: [PATCH 2/4] add AddRows function to allow adding multiple rows --- rows.go | 10 +++++++ rows_test.go | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) diff --git a/rows.go b/rows.go index ccc5f0c..941544b 100644 --- a/rows.go +++ b/rows.go @@ -188,6 +188,16 @@ func (r *Rows) AddRow(values ...driver.Value) *Rows { return r } +// AddRows adds multiple rows composed from database driver.Value slice and +// returns the same instance to perform subsequent actions. +func (r *Rows) AddRows(values ...[]driver.Value) *Rows { + for _, value := range values { + r.AddRow(value...) + } + + return r +} + // FromCSVString build rows from csv string. // return the same instance to perform subsequent actions. // Note that the number of values must match the number diff --git a/rows_test.go b/rows_test.go index 15cdbee..9d2c7e1 100644 --- a/rows_test.go +++ b/rows_test.go @@ -3,6 +3,7 @@ package sqlmock import ( "bytes" "database/sql" + "database/sql/driver" "fmt" "testing" ) @@ -670,3 +671,85 @@ func queryRowBytesNotInvalidatedByClose(t *testing.T, rows *Rows, scan func(*sql t.Fatal(err) } } + +func TestAddRows(t *testing.T) { + t.Parallel() + db, mock, err := New() + if err != nil { + t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) + } + defer db.Close() + + values := [][]driver.Value{ + { + 1, "John", + }, + { + 2, "Jane", + }, + { + 3, "Peter", + }, + { + 4, "Emily", + }, + } + + rows := NewRows([]string{"id", "name"}).AddRows(values...) + mock.ExpectQuery("SELECT").WillReturnRows(rows).RowsWillBeClosed() + + rs, _ := db.Query("SELECT") + defer rs.Close() + + for rs.Next() { + var id int + var name string + rs.Scan(&id, &name) + fmt.Println("scanned id:", id, "and name:", name) + } + + if rs.Err() != nil { + fmt.Println("got rows error:", rs.Err()) + } + // Output: scanned id: 1 and title: John + // scanned id: 2 and title: Jane + // scanned id: 3 and title: Peter + // scanned id: 4 and title: Emily +} + +func ExampleMultiRows() { + db, mock, err := New() + if err != nil { + fmt.Println("failed to open sqlmock database:", err) + } + defer db.Close() + + values := [][]driver.Value{ + { + 1, "one", + }, + { + 2, "two", + }, + } + + rows := NewRows([]string{"id", "title"}).AddRows(values...) + + mock.ExpectQuery("SELECT").WillReturnRows(rows) + + rs, _ := db.Query("SELECT") + defer rs.Close() + + for rs.Next() { + var id int + var title string + rs.Scan(&id, &title) + fmt.Println("scanned id:", id, "and title:", title) + } + + if rs.Err() != nil { + fmt.Println("got rows error:", rs.Err()) + } + // Output: scanned id: 1 and title: one + // scanned id: 2 and title: two +} From caefcfd920cffeed4cf1c86cb4049f6fef661a7e Mon Sep 17 00:00:00 2001 From: Ajitem Sahasrabuddhe Date: Sun, 30 May 2021 13:19:48 +0530 Subject: [PATCH 3/4] support go 1.15 go versions 1.14 and below are unsupported as per https://golang.org/doc/devel/release#policy and hence the library does not support them either --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 2c288f8..6f58b70 100644 --- a/go.mod +++ b/go.mod @@ -1,5 +1,5 @@ module github.com/DATA-DOG/go-sqlmock -go 1.16 +go 1.15 require github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 From 4d55f937d066da43dc7917fe15bbd7c931de2114 Mon Sep 17 00:00:00 2001 From: Ajitem Sahasrabuddhe Date: Sun, 30 May 2021 13:21:28 +0530 Subject: [PATCH 4/4] fix go vet error --- rows_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rows_test.go b/rows_test.go index 9d2c7e1..ef17521 100644 --- a/rows_test.go +++ b/rows_test.go @@ -717,7 +717,7 @@ func TestAddRows(t *testing.T) { // scanned id: 4 and title: Emily } -func ExampleMultiRows() { +func ExampleRows_AddRows() { db, mock, err := New() if err != nil { fmt.Println("failed to open sqlmock database:", err)