package services import ( "github.com/muety/wakapi/mocks" "github.com/muety/wakapi/models" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/suite" "testing" ) type AliasServiceTestSuite struct { suite.Suite TestUserId string AliasRepository *mocks.AliasRepositoryMock } func (suite *AliasServiceTestSuite) SetupSuite() { suite.TestUserId = "johndoe@example.org" aliases := []*models.Alias{ { Type: models.SummaryProject, UserID: suite.TestUserId, Key: "wakapi", Value: "wakapi-mobile", }, } aliasRepoMock := new(mocks.AliasRepositoryMock) aliasRepoMock.On("GetByUser", suite.TestUserId).Return(aliases, nil) aliasRepoMock.On("GetByUser", mock.AnythingOfType("string")).Return([]*models.Alias{}, assert.AnError) suite.AliasRepository = aliasRepoMock } func TestAliasServiceTestSuite(t *testing.T) { suite.Run(t, new(AliasServiceTestSuite)) } func (suite *AliasServiceTestSuite) TestAliasService_GetAliasOrDefault() { sut := NewAliasService(suite.AliasRepository) result1, err1 := sut.GetAliasOrDefault(suite.TestUserId, models.SummaryProject, "wakapi-mobile") result2, err2 := sut.GetAliasOrDefault(suite.TestUserId, models.SummaryProject, "wakapi") result3, err3 := sut.GetAliasOrDefault(suite.TestUserId, models.SummaryProject, "anchr") assert.Equal(suite.T(), "wakapi", result1) assert.Nil(suite.T(), err1) assert.Equal(suite.T(), "wakapi", result2) assert.Nil(suite.T(), err2) assert.Equal(suite.T(), "anchr", result3) assert.Nil(suite.T(), err3) } func (suite *AliasServiceTestSuite) TestAliasService_GetAliasOrDefault_ErrorOnNonExistingUser() { sut := NewAliasService(suite.AliasRepository) result, err := sut.GetAliasOrDefault("nonexisting", models.SummaryProject, "wakapi-mobile") assert.Empty(suite.T(), result) assert.Error(suite.T(), err) }