aboutsummaryrefslogtreecommitdiff
path: root/pkg/database/stop_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/database/stop_test.go')
-rw-r--r--pkg/database/stop_test.go68
1 files changed, 20 insertions, 48 deletions
diff --git a/pkg/database/stop_test.go b/pkg/database/stop_test.go
index a670393..1779930 100644
--- a/pkg/database/stop_test.go
+++ b/pkg/database/stop_test.go
@@ -2,12 +2,10 @@ package database
import (
"fmt"
- "reflect"
"testing"
"git.adyxax.org/adyxax/trains/pkg/model"
"github.com/DATA-DOG/go-sqlmock"
- "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@@ -22,14 +20,14 @@ func TestCountStops(t *testing.T) {
// check sql error
i, err := db.CountStops()
require.Error(t, err)
- assert.Equalf(t, reflect.TypeOf(err), reflect.TypeOf(&QueryError{}), "Invalid error type. Got %s but expected %s", reflect.TypeOf(err), reflect.TypeOf(&QueryError{}))
+ requireErrorTypeMatch(t, err, &QueryError{})
// normal check
err = db.Migrate()
require.NoError(t, err)
err = db.ReplaceAndImportStops(stops)
i, err = db.CountStops()
require.NoError(t, err)
- assert.Equal(t, i, len(stops))
+ require.Equal(t, i, len(stops))
}
func TestGetStop(t *testing.T) {
@@ -46,11 +44,11 @@ func TestGetStop(t *testing.T) {
// normal check
stop, err := db.GetStop("id1")
require.NoError(t, err)
- assert.Equal(t, stop, &stops[0])
+ require.Equal(t, stop, &stops[0])
// error check
stop, err = db.GetStop("non_existent")
require.Error(t, err)
- assert.Equalf(t, reflect.TypeOf(err), reflect.TypeOf(&QueryError{}), "Invalid error type. Got %s but expected %s", reflect.TypeOf(err), reflect.TypeOf(&QueryError{}))
+ requireErrorTypeMatch(t, err, &QueryError{})
}
func TestGetStops(t *testing.T) {
@@ -64,42 +62,24 @@ func TestGetStops(t *testing.T) {
// error check
res, err := db.GetStops()
require.Error(t, err)
- assert.Equalf(t, reflect.TypeOf(err), reflect.TypeOf(&QueryError{}), "Invalid error type. Got %s but expected %s", reflect.TypeOf(err), reflect.TypeOf(&QueryError{}))
+ requireErrorTypeMatch(t, err, &QueryError{})
// normal check
err = db.Migrate()
require.NoError(t, err)
err = db.ReplaceAndImportStops(stops)
res, err = db.GetStops()
require.NoError(t, err)
- assert.Equal(t, res, stops)
+ require.Equal(t, res, stops)
}
func TestGetStopsWithSQLMock(t *testing.T) {
// Transaction commit error
- dbScanError, mockScanError, err := sqlmock.New()
- if err != nil {
- t.Fatalf("an error '%s' was not expected when opening a stub database connection", err)
- }
- mockScanError.ExpectQuery(`SELECT id, name FROM stops;`).WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).AddRow(nil, "b").RowError(1, fmt.Errorf("row error")))
- // Test cases
- testCases := []struct {
- name string
- db *DBEnv
- expectedError interface{}
- }{
- {"query error when scanning row", &DBEnv{db: dbScanError}, &QueryError{}},
- }
- for _, tc := range testCases {
- t.Run(tc.name, func(t *testing.T) {
- _, err := tc.db.GetStops()
- if tc.expectedError != nil {
- require.Error(t, err)
- assert.Equalf(t, reflect.TypeOf(err), reflect.TypeOf(tc.expectedError), "Invalid error type. Got %s but expected %s", reflect.TypeOf(err), reflect.TypeOf(tc.expectedError))
- } else {
- require.NoError(t, err)
- }
- })
- }
+ db, mock, err := sqlmock.New()
+ require.NoError(t, err, "an error '%s' was not expected when opening a stub database connection", err)
+ mock.ExpectQuery(`SELECT id, name FROM stops;`).WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).AddRow(nil, "b").RowError(1, fmt.Errorf("row error")))
+ _, err = (&DBEnv{db: db}).GetStops()
+ require.Error(t, err)
+ requireErrorTypeMatch(t, err, &QueryError{})
}
func TestReplaceAndImportStops(t *testing.T) {
@@ -121,7 +101,7 @@ func TestReplaceAndImportStops(t *testing.T) {
testCases := []struct {
name string
input []model.Stop
- expectedError interface{}
+ expectedError error
}{
{"Normal insert", data1, nil},
{"Normal insert overwrite", data2, nil},
@@ -131,7 +111,7 @@ func TestReplaceAndImportStops(t *testing.T) {
err := db.ReplaceAndImportStops(tc.input)
if tc.expectedError != nil {
require.Error(t, err)
- assert.Equalf(t, reflect.TypeOf(err), reflect.TypeOf(tc.expectedError), "Invalid error type. Got %s but expected %s", reflect.TypeOf(err), reflect.TypeOf(tc.expectedError))
+ requireErrorTypeMatch(t, err, tc.expectedError)
} else {
require.NoError(t, err)
}
@@ -147,30 +127,22 @@ func TestReplaceAndImportStopsWithSQLMock(t *testing.T) {
}
// Transaction begin error
dbBeginError, _, err := sqlmock.New()
- if err != nil {
- t.Fatalf("an error '%s' was not expected when opening a stub database connection", err)
- }
+ require.NoError(t, err, "an error '%s' was not expected when opening a stub database connection", err)
defer dbBeginError.Close()
// Query error cannot delete from
dbCannotDeleteFrom, mockCannotDeleteFrom, err := sqlmock.New()
- if err != nil {
- t.Fatalf("an error '%s' was not expected when opening a stub database connection", err)
- }
+ require.NoError(t, err, "an error '%s' was not expected when opening a stub database connection", err)
defer dbCannotDeleteFrom.Close()
mockCannotDeleteFrom.ExpectBegin()
// Transaction commit error
dbCannotInsertError, mockCannotInsertError, err := sqlmock.New()
- if err != nil {
- t.Fatalf("an error '%s' was not expected when opening a stub database connection", err)
- }
+ require.NoError(t, err, "an error '%s' was not expected when opening a stub database connection", err)
defer dbCannotInsertError.Close()
mockCannotInsertError.ExpectBegin()
mockCannotInsertError.ExpectExec(`DELETE FROM`).WillReturnResult(sqlmock.NewResult(1, 1))
// Transaction commit error
dbCommitError, mockCommitError, err := sqlmock.New()
- if err != nil {
- t.Fatalf("an error '%s' was not expected when opening a stub database connection", err)
- }
+ require.NoError(t, err, "an error '%s' was not expected when opening a stub database connection", err)
defer dbCommitError.Close()
mockCommitError.ExpectBegin()
mockCommitError.ExpectExec(`DELETE FROM`).WillReturnResult(sqlmock.NewResult(1, 1))
@@ -180,7 +152,7 @@ func TestReplaceAndImportStopsWithSQLMock(t *testing.T) {
testCases := []struct {
name string
db *DBEnv
- expectedError interface{}
+ expectedError error
}{
{"begin transaction error", &DBEnv{db: dbBeginError}, &TransactionError{}},
{"query error cannot delete from", &DBEnv{db: dbCannotDeleteFrom}, &QueryError{}},
@@ -192,7 +164,7 @@ func TestReplaceAndImportStopsWithSQLMock(t *testing.T) {
err := tc.db.ReplaceAndImportStops(data1)
if tc.expectedError != nil {
require.Error(t, err)
- assert.Equalf(t, reflect.TypeOf(err), reflect.TypeOf(tc.expectedError), "Invalid error type. Got %s but expected %s", reflect.TypeOf(err), reflect.TypeOf(tc.expectedError))
+ requireErrorTypeMatch(t, err, tc.expectedError)
} else {
require.NoError(t, err)
}