Don't rely on testify for basic assertions

This commit is contained in:
Kegan Dougal 2020-09-14 15:59:22 +01:00
parent 68ef563b3c
commit 43375d0e5e
2 changed files with 35 additions and 17 deletions

1
go.mod
View file

@ -33,7 +33,6 @@ require (
github.com/pressly/goose v2.7.0-rc5+incompatible github.com/pressly/goose v2.7.0-rc5+incompatible
github.com/prometheus/client_golang v1.7.1 github.com/prometheus/client_golang v1.7.1
github.com/sirupsen/logrus v1.6.0 github.com/sirupsen/logrus v1.6.0
github.com/stretchr/testify v1.6.1
github.com/tidwall/gjson v1.6.1 github.com/tidwall/gjson v1.6.1
github.com/tidwall/sjson v1.1.1 github.com/tidwall/sjson v1.1.1
github.com/uber/jaeger-client-go v2.25.0+incompatible github.com/uber/jaeger-client-go v2.25.0+incompatible

View file

@ -3,15 +3,15 @@ package sqlutil
import ( import (
"context" "context"
"database/sql" "database/sql"
"reflect"
"testing" "testing"
sqlmock "github.com/DATA-DOG/go-sqlmock" sqlmock "github.com/DATA-DOG/go-sqlmock"
"github.com/stretchr/testify/assert"
) )
func TestShouldReturnCorrectAmountOfResulstIfFewerVariablesThanLimit(t *testing.T) { func TestShouldReturnCorrectAmountOfResulstIfFewerVariablesThanLimit(t *testing.T) {
db, mock, err := sqlmock.New() db, mock, err := sqlmock.New()
assert.NoError(t, err) assertNoError(t, err, "Failed to make DB")
limit := uint(4) limit := uint(4)
r := mock.NewRows([]string{"id"}). r := mock.NewRows([]string{"id"}).
@ -33,18 +33,20 @@ func TestShouldReturnCorrectAmountOfResulstIfFewerVariablesThanLimit(t *testing.
for rows.Next() { for rows.Next() {
var id int var id int
err = rows.Scan(&id) err = rows.Scan(&id)
assert.NoError(t, err, "rows.Scan returned an error") assertNoError(t, err, "rows.Scan returned an error")
result = append(result, id) result = append(result, id)
} }
return nil return nil
}, iKeyIDs, limit) }, iKeyIDs, limit)
assert.NoError(t, err, "Call returned an error") assertNoError(t, err, "Call returned an error")
assert.Len(t, result, len(v), "Result should be 3 long") if len(result) != len(v) {
t.Fatalf("Result should be 3 long")
}
} }
func TestShouldReturnCorrectAmountOfResulstIfEqualVariablesAsLimit(t *testing.T) { func TestShouldReturnCorrectAmountOfResulstIfEqualVariablesAsLimit(t *testing.T) {
db, mock, err := sqlmock.New() db, mock, err := sqlmock.New()
assert.NoError(t, err) assertNoError(t, err, "Failed to make DB")
limit := uint(4) limit := uint(4)
r := mock.NewRows([]string{"id"}). r := mock.NewRows([]string{"id"}).
@ -67,18 +69,20 @@ func TestShouldReturnCorrectAmountOfResulstIfEqualVariablesAsLimit(t *testing.T)
for rows.Next() { for rows.Next() {
var id int var id int
err = rows.Scan(&id) err = rows.Scan(&id)
assert.NoError(t, err, "rows.Scan returned an error") assertNoError(t, err, "rows.Scan returned an error")
result = append(result, id) result = append(result, id)
} }
return nil return nil
}, iKeyIDs, limit) }, iKeyIDs, limit)
assert.NoError(t, err, "Call returned an error") assertNoError(t, err, "Call returned an error")
assert.Len(t, result, len(v), "Result should be 3 long") if len(result) != len(v) {
t.Fatalf("Result should be 4 long")
}
} }
func TestShouldReturnCorrectAmountOfResultsIfMoreVariablesThanLimit(t *testing.T) { func TestShouldReturnCorrectAmountOfResultsIfMoreVariablesThanLimit(t *testing.T) {
db, mock, err := sqlmock.New() db, mock, err := sqlmock.New()
assert.NoError(t, err) assertNoError(t, err, "Failed to make DB")
limit := uint(4) limit := uint(4)
r1 := mock.NewRows([]string{"id"}). r1 := mock.NewRows([]string{"id"}).
@ -105,21 +109,26 @@ func TestShouldReturnCorrectAmountOfResultsIfMoreVariablesThanLimit(t *testing.T
for rows.Next() { for rows.Next() {
var id int var id int
err = rows.Scan(&id) err = rows.Scan(&id)
assert.NoError(t, err, "rows.Scan returned an error") assertNoError(t, err, "rows.Scan returned an error")
result = append(result, id) result = append(result, id)
} }
return nil return nil
}, iKeyIDs, limit) }, iKeyIDs, limit)
assert.NoError(t, err, "Call returned an error") assertNoError(t, err, "Call returned an error")
assert.Equal(t, v, result, "Result is not as expected") if len(result) != len(v) {
assert.Len(t, result, len(v), "Result should be 3 long") t.Fatalf("Result should be 5 long")
}
if !reflect.DeepEqual(v, result) {
t.Fatalf("Result is not as expected: got %v want %v", v, result)
}
} }
func TestShouldREturnErrorIfRowsScanReturnsError(t *testing.T) { func TestShouldREturnErrorIfRowsScanReturnsError(t *testing.T) {
db, mock, err := sqlmock.New() db, mock, err := sqlmock.New()
assert.NoError(t, err) assertNoError(t, err, "Failed to make DB")
limit := uint(4) limit := uint(4)
// adding a string ID should result in rows.Scan returning an error
r := mock.NewRows([]string{"id"}). r := mock.NewRows([]string{"id"}).
AddRow("hej"). AddRow("hej").
AddRow(2). AddRow(2).
@ -146,5 +155,15 @@ func TestShouldREturnErrorIfRowsScanReturnsError(t *testing.T) {
} }
return nil return nil
}, iKeyIDs, limit) }, iKeyIDs, limit)
assert.Error(t, err, "Call did not return an error") if err == nil {
t.Fatalf("Call did not return an error")
}
}
func assertNoError(t *testing.T, err error, msg string) {
t.Helper()
if err == nil {
return
}
t.Fatalf(msg)
} }