-
Notifications
You must be signed in to change notification settings - Fork 0
/
sub_builder_test.go
63 lines (50 loc) · 2.14 KB
/
sub_builder_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package dbkit
import (
"errors"
"github.com/kitstack/dbkit/specs"
"github.com/kitstack/dbkit/tests/mocks"
"github.com/kitstack/depkit"
"github.com/stretchr/testify/suite"
"testing"
)
type SubBuilderTestSuite struct {
suite.Suite
fakeBuilder *mocks.FakeBuilder[specs.Model]
fakeModelDefinition *mocks.FakeModelDefinition
fakeNewSubBuilderJob *mocks.FakeNewSubBuilderJob[specs.Model]
fakeSubBuilderJob *mocks.FakeSubBuilderJob[specs.Model]
}
func (test *SubBuilderTestSuite) SetupTest() {
test.fakeBuilder = mocks.NewFakeBuilder[specs.Model](test.T())
test.fakeModelDefinition = mocks.NewFakeModelDefinition(test.T())
test.fakeNewSubBuilderJob = mocks.NewFakeNewSubBuilderJob[specs.Model](test.T())
test.fakeSubBuilderJob = mocks.NewFakeSubBuilderJob[specs.Model](test.T())
depkit.Reset()
depkit.Register[specs.NewSubBuilderJob[specs.Model]](test.fakeNewSubBuilderJob.NewSubBuilderJob)
}
func (test *SubBuilderTestSuite) TestNewSubBuilder() {
test.fakeSubBuilderJob.On("Execute").Return(nil).Once()
test.fakeNewSubBuilderJob.On("NewSubBuilderJob", test.fakeBuilder, "fundamentalName", test.fakeModelDefinition).Return(test.fakeSubBuilderJob).Once()
subBuilder := newSubBuilder[specs.Model]()
subBuilder.AddJob(test.fakeBuilder, "fundamentalName", test.fakeModelDefinition)
// AddJob with same name
subBuilder.AddJob(test.fakeBuilder, "fundamentalName", test.fakeModelDefinition)
// Execute
err := subBuilder.Execute()
test.NoError(err)
}
func (test *SubBuilderTestSuite) TestNewSubBuilderErr() {
test.fakeSubBuilderJob.On("Execute").Return(errors.New("job_error")).Once()
test.fakeNewSubBuilderJob.On("NewSubBuilderJob", test.fakeBuilder, "fundamentalName", test.fakeModelDefinition).Return(test.fakeSubBuilderJob).Once()
subBuilder := newSubBuilder[specs.Model]()
subBuilder.AddJob(test.fakeBuilder, "fundamentalName", test.fakeModelDefinition)
// AddJob with same name
subBuilder.AddJob(test.fakeBuilder, "fundamentalName", test.fakeModelDefinition)
// Execute
err := subBuilder.Execute()
test.Error(err)
test.EqualError(err, "job_error")
}
func TestSubBuilderTestSuite(t *testing.T) {
suite.Run(t, new(SubBuilderTestSuite))
}