Skip to content

Commit 60b2068

Browse files
committed
closes #5
1 parent 4c6f0e6 commit 60b2068

File tree

4 files changed

+53
-4
lines changed

4 files changed

+53
-4
lines changed

.travis.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ language: go
22
go:
33
- 1.1
44
- 1.2
5+
- 1.3
56
- release
67
- tip
78

89
script:
10+
- go vet ./...
911
- go test -v ./...

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,8 @@ Visit [godoc](http://godoc.org/github.com/DATA-DOG/go-sqlmock)
320320

321321
## Changes
322322

323+
- **2014-08-14** added **sqlmock.NewErrorResult** which gives an option to return driver.Result with errors for
324+
interface methods, see [issue](https://github.com/DATA-DOG/go-sqlmock/issues/5)
323325
- **2014-05-29** allow to match arguments in more sophisticated ways, by providing an **sqlmock.Argument** interface
324326
- **2014-04-21** introduce **sqlmock.New()** to open a mock database connection for tests. This method
325327
calls sql.DB.Ping to ensure that connection is open, see [issue](https://github.com/DATA-DOG/go-sqlmock/issues/4).

result.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,30 @@ import (
1010
type result struct {
1111
insertID int64
1212
rowsAffected int64
13+
err error
1314
}
1415

1516
// NewResult creates a new sql driver Result
1617
// for Exec based query mocks.
1718
func NewResult(lastInsertID int64, rowsAffected int64) driver.Result {
1819
return &result{
19-
lastInsertID,
20-
rowsAffected,
20+
insertID: lastInsertID,
21+
rowsAffected: rowsAffected,
22+
}
23+
}
24+
25+
// NewErrorResult creates a new sql driver Result
26+
// which returns an error given for both interface methods
27+
func NewErrorResult(err error) driver.Result {
28+
return &result{
29+
err: err,
2130
}
2231
}
2332

2433
func (r *result) LastInsertId() (int64, error) {
25-
return r.insertID, nil
34+
return r.insertID, r.err
2635
}
2736

2837
func (r *result) RowsAffected() (int64, error) {
29-
return r.rowsAffected, nil
38+
return r.rowsAffected, r.err
3039
}

result_test.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package sqlmock
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
)
7+
8+
func TestShouldReturnValidSqlDriverResult(t *testing.T) {
9+
result := NewResult(1, 2)
10+
id, err := result.LastInsertId()
11+
if 1 != id {
12+
t.Errorf("Expected last insert id to be 1, but got: %d", id)
13+
}
14+
if err != nil {
15+
t.Errorf("expected no error, but got: %s", err)
16+
}
17+
affected, err := result.RowsAffected()
18+
if 2 != affected {
19+
t.Errorf("Expected affected rows to be 2, but got: %d", affected)
20+
}
21+
if err != nil {
22+
t.Errorf("expected no error, but got: %s", err)
23+
}
24+
}
25+
26+
func TestShouldReturnErroeSqlDriverResult(t *testing.T) {
27+
result := NewErrorResult(fmt.Errorf("some error"))
28+
_, err := result.LastInsertId()
29+
if err == nil {
30+
t.Error("expected error, but got none")
31+
}
32+
_, err = result.RowsAffected()
33+
if err == nil {
34+
t.Error("expected error, but got none")
35+
}
36+
}

0 commit comments

Comments
 (0)