github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/internal/repo/testdb/mock.go (about) 1 package testdb 2 3 import ( 4 "testing" 5 6 "github.com/DATA-DOG/go-sqlmock" 7 "github.com/jmoiron/sqlx" 8 "github.com/stretchr/testify/require" 9 ) 10 11 // MockDatabase returns a new *sqlx.DB mock alongside with a wrapper providing easier interface for asserting expectations. 12 func MockDatabase(t *testing.T) (*sqlx.DB, DBMock) { 13 sqlDB, sqlMock, err := sqlmock.New() 14 require.NoError(t, err) 15 16 sqlxDB := sqlx.NewDb(sqlDB, "sqlmock") 17 18 return sqlxDB, &sqlMockWithAssertions{sqlMock} 19 } 20 21 // DBMock represents a wrapper providing easier interface for asserting expectations. 22 type DBMock interface { 23 sqlmock.Sqlmock 24 AssertExpectations(t *testing.T) 25 } 26 27 type sqlMockWithAssertions struct { 28 sqlmock.Sqlmock 29 } 30 31 // AssertExpectations asserts that all the expectations to the mock were met. 32 func (s *sqlMockWithAssertions) AssertExpectations(t *testing.T) { 33 err := s.ExpectationsWereMet() 34 require.NoError(t, err) 35 }