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  }