Skip to content

Instantly share code, notes, and snippets.

@solrac97gr
Created August 17, 2021 23:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save solrac97gr/f08ec5e2cbb805a1ccb4b49e2b51ae2f to your computer and use it in GitHub Desktop.
Save solrac97gr/f08ec5e2cbb805a1ccb4b49e2b51ae2f to your computer and use it in GitHub Desktop.
func TestGetOneRule(t *testing.T) {
tests := map[string]struct {
testSetup func(m *mocks.MockRuleRepository)
assertionSetup func(subtest *testing.T, r domain.Rule, e error)
}{
"Success get rule": {
testSetup: func(m *mocks.MockRuleRepository) {
m.
EXPECT().
Get(gomock.Any()).
Return(domain.Rule{
ID: "test",
}, nil)
},
assertionSetup: func(subtest *testing.T, r domain.Rule, e error) {
assert.NotNil(subtest, r, "")
assert.Nil(subtest, e, "")
},
},
"Error in the repository to get rule": {
testSetup: func(m *mocks.MockRuleRepository) {
m.
EXPECT().
Get(gomock.Any()).
Return(domain.Rule{}, errors.New("get rule bla bla"))
},
assertionSetup: func(subtest *testing.T, r domain.Rule, e error) {
assert.Equal(subtest, domain.Rule{}, r, "")
assert.NotNil(subtest, e, "")
assert.Contains(subtest, e.Error(), "get rule", "")
},
},
}
for name, test := range tests {
t.Run(name, func(subtest *testing.T) {
ctrl := gomock.NewController(t)
defer ctrl.Finish()
ruleRepositoryMock := mocks.NewMockRuleRepository(ctrl)
clientRepositoryMock := mocks.NewMockClientRepository(ctrl)
if test.testSetup != nil {
test.testSetup(ruleRepositoryMock)
}
srv := rulessrv.New(ruleRepositoryMock, clientRepositoryMock)
rule, err := srv.Get("")
if test.assertionSetup != nil {
test.assertionSetup(subtest, rule, err)
}
})
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment