gorm/examples/mock_test.go
Alvaro Viebrantz 7c762943d4 Add mock example and mock implementation of Database interface.
stretchr/testify has used as mock library
2016-01-17 16:10:34 -03:00

43 lines
934 B
Go

package examples
import (
"testing"
"github.com/jinzhu/gorm/mocks"
"github.com/stretchr/testify/mock"
)
var databaseMock *mocks.Database
var expected []interface{}
func setUp(){
databaseMock = new(mocks.Database)
databaseMock.On("Where", mock.Anything, mock.Anything).Return(databaseMock)
databaseMock.On("Find", mock.Anything, expected).Return(databaseMock)
databaseMock.On("GetError").Return(nil)
}
func TestFindAllWithoutFilter(t *testing.T){
setUp()
repo := ProductRepositoryImpl{DB: databaseMock}
products, err := repo.FindAll(-1, -1)
databaseMock.AssertCalled(t, "Find", &products, expected)
if err != nil {
t.Error("No error expected")
}
}
func TestFindAll(t *testing.T) {
setUp()
repo := ProductRepositoryImpl{DB: databaseMock}
repo.FindAll(1, 2)
databaseMock.AssertCalled(t, "Where", "storeId = ?", []interface{}{1})
databaseMock.AssertCalled(t, "Where", "categoryId = ?", []interface{}{2})
}