Skip to content

Commit

Permalink
test(plc4go): ensure mocks are created with right test context
Browse files Browse the repository at this point in the history
  • Loading branch information
sruehl committed May 9, 2023
1 parent 3a5ccfa commit 5b8995e
Show file tree
Hide file tree
Showing 8 changed files with 193 additions and 171 deletions.
15 changes: 8 additions & 7 deletions plc4go/spi/default/DefaultBrowser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,18 +141,19 @@ func Test_defaultBrowser_BrowseWithInterceptor(t *testing.T) {
t.Cleanup(cancelFunc)
return timeout
}(),
browseRequest: spiModel.NewDefaultPlcBrowseRequest(
map[string]apiModel.PlcQuery{
"test": NewMockPlcQuery(t),
},
[]string{"test"},
nil,
),
},
mockSetup: func(t *testing.T, fields *fields, args *args) {
requirements := NewMockDefaultBrowserRequirements(t)
requirements.EXPECT().BrowseQuery(mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(0, nil)
fields.DefaultBrowserRequirements = requirements
query := NewMockPlcQuery(t)
args.browseRequest = spiModel.NewDefaultPlcBrowseRequest(
map[string]apiModel.PlcQuery{
"test": query,
},
[]string{"test"},
nil,
)
},
wantAsserter: func(t *testing.T, results <-chan apiModel.PlcBrowseRequestResult) bool {
timeout := time.NewTimer(2 * time.Second)
Expand Down
40 changes: 22 additions & 18 deletions plc4go/spi/default/DefaultCodec_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -329,24 +329,26 @@ func Test_defaultCodec_Connect(t *testing.T) {
customMessageHandling func(codec DefaultCodecRequirements, message spi.Message) bool
}
tests := []struct {
name string
fields fields
wantErr assert.ErrorAssertionFunc
name string
fields fields
mockSetup func(t *testing.T, fields *fields)
wantErr assert.ErrorAssertionFunc
}{
{
name: "connect it",
fields: fields{
transportInstance: func() transports.TransportInstance {
instance := NewMockTransportInstance(t)
instance.EXPECT().IsConnected().Return(true)
return instance
}(),
mockSetup: func(t *testing.T, fields *fields) {
instance := NewMockTransportInstance(t)
instance.EXPECT().IsConnected().Return(true)
fields.transportInstance = instance
},
wantErr: assert.NoError,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if tt.mockSetup != nil {
tt.mockSetup(t, &tt.fields)
}
m := &defaultCodec{
DefaultCodecRequirements: tt.fields.DefaultCodecRequirements,
transportInstance: tt.fields.transportInstance,
Expand Down Expand Up @@ -437,24 +439,26 @@ func Test_defaultCodec_Disconnect(t *testing.T) {
customMessageHandling func(codec DefaultCodecRequirements, message spi.Message) bool
}
tests := []struct {
name string
fields fields
wantErr assert.ErrorAssertionFunc
name string
fields fields
mockSetup func(t *testing.T, fields *fields)
wantErr assert.ErrorAssertionFunc
}{
{
name: "disconnect it",
fields: fields{
transportInstance: func() transports.TransportInstance {
instance := NewMockTransportInstance(t)
instance.EXPECT().Close().Return(nil)
return instance
}(),
mockSetup: func(t *testing.T, fields *fields) {
instance := NewMockTransportInstance(t)
instance.EXPECT().Close().Return(nil)
fields.transportInstance = instance
},
wantErr: assert.NoError,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if tt.mockSetup != nil {
tt.mockSetup(t, &tt.fields)
}
m := &defaultCodec{
DefaultCodecRequirements: tt.fields.DefaultCodecRequirements,
transportInstance: tt.fields.transportInstance,
Expand Down
55 changes: 34 additions & 21 deletions plc4go/spi/default/DefaultConnection_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -471,19 +471,23 @@ func Test_defaultConnection_BrowseRequestBuilder(t *testing.T) {
valueHandler spi.PlcValueHandler
}
tests := []struct {
name string
fields fields
want model.PlcBrowseRequestBuilder
name string
fields fields
mockSetup func(t *testing.T, fields *fields)
want model.PlcBrowseRequestBuilder
}{
{
name: "create it",
fields: fields{
DefaultConnectionRequirements: NewMockDefaultConnectionRequirements(t),
mockSetup: func(t *testing.T, fields *fields) {
fields.DefaultConnectionRequirements = NewMockDefaultConnectionRequirements(t)
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if tt.mockSetup != nil {
tt.mockSetup(t, &tt.fields)
}
defer func() {
if err := recover(); err != nil {
assert.Equal(t, "not provided by actual connection", err)
Expand Down Expand Up @@ -776,31 +780,32 @@ func Test_defaultConnection_GetTransportInstance(t *testing.T) {
tagHandler spi.PlcTagHandler
valueHandler spi.PlcValueHandler
}
theInstance := NewMockTransportInstance(t)

tests := []struct {
name string
fields fields
mockSetup func(t *testing.T, fields *fields)
mockSetup func(t *testing.T, fields *fields, want *transports.TransportInstance)
want transports.TransportInstance
}{
{
name: "get it",
mockSetup: func(t *testing.T, fields *fields) {
mockSetup: func(t *testing.T, fields *fields, want *transports.TransportInstance) {
requirements := NewMockDefaultConnectionRequirements(t)
codec := NewMockMessageCodec(t)
{
codec.EXPECT().GetTransportInstance().Return(theInstance)
instance := NewMockTransportInstance(t)
codec.EXPECT().GetTransportInstance().Return(instance)
*want = instance
}
requirements.EXPECT().GetMessageCodec().Return(codec)
fields.DefaultConnectionRequirements = requirements
},
want: theInstance,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if tt.mockSetup != nil {
tt.mockSetup(t, &tt.fields)
tt.mockSetup(t, &tt.fields, &tt.want)
}
d := &defaultConnection{
DefaultConnectionRequirements: tt.fields.DefaultConnectionRequirements,
Expand Down Expand Up @@ -1177,20 +1182,24 @@ func Test_plcConnectionCloseResult_GetErr(t *testing.T) {
traces []spi.TraceEntry
}
tests := []struct {
name string
fields fields
wantErr assert.ErrorAssertionFunc
name string
fields fields
mockSetup func(t *testing.T, fields *fields)
wantErr assert.ErrorAssertionFunc
}{
{
name: "get it",
fields: fields{
connection: NewMockPlcConnection(t),
mockSetup: func(t *testing.T, fields *fields) {
fields.connection = NewMockPlcConnection(t)
},
wantErr: assert.NoError,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if tt.mockSetup != nil {
tt.mockSetup(t, &tt.fields)
}
d := &plcConnectionCloseResult{
connection: tt.fields.connection,
err: tt.fields.err,
Expand Down Expand Up @@ -1259,20 +1268,24 @@ func Test_plcConnectionConnectResult_GetErr(t *testing.T) {
err error
}
tests := []struct {
name string
fields fields
wantErr assert.ErrorAssertionFunc
name string
fields fields
mockSetup func(t *testing.T, fields *fields)
wantErr assert.ErrorAssertionFunc
}{
{
name: "get it",
fields: fields{
connection: NewMockPlcConnection(t),
mockSetup: func(t *testing.T, fields *fields) {
fields.connection = NewMockPlcConnection(t)
},
wantErr: assert.NoError,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if tt.mockSetup != nil {
tt.mockSetup(t, &tt.fields)
}
d := &plcConnectionConnectResult{
connection: tt.fields.connection,
err: tt.fields.err,
Expand Down
3 changes: 2 additions & 1 deletion plc4go/spi/interceptors/SingleItemRequestInterceptor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -402,8 +402,9 @@ func TestSingleItemRequestInterceptor_ProcessReadResponses(t *testing.T) {
},
},
mockSetup: func(t *testing.T, fields *fields, args *args) {
result := NewMockPlcReadRequestResult(t)
args.readResults = []apiModel.PlcReadRequestResult{
NewMockPlcReadRequestResult(t),
result,
}
},
wantAssert: func(t *testing.T, args args, got apiModel.PlcReadRequestResult) bool {
Expand Down
28 changes: 17 additions & 11 deletions plc4go/spi/model/DefaultPlcBrowseRequest_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,32 +42,38 @@ func TestDefaultPlcBrowseRequestBuilder_AddQuery(t *testing.T) {
query string
}
tests := []struct {
name string
fields fields
args args
want apiModel.PlcBrowseRequestBuilder
name string
fields fields
args args
mockSetup func(t *testing.T, fields *fields, args *args, want *apiModel.PlcBrowseRequestBuilder)
want apiModel.PlcBrowseRequestBuilder
}{
{
name: "add one",
fields: fields{
tagHandler: NewMockPlcTagHandler(t),
queryStrings: map[string]string{},
},
args: args{
name: "a name",
query: "a query",
},
want: &DefaultPlcBrowseRequestBuilder{
tagHandler: NewMockPlcTagHandler(t),
queryStrings: map[string]string{
"a name": "a query",
},
queryNames: []string{"a name"},
mockSetup: func(t *testing.T, fields *fields, args *args, want *apiModel.PlcBrowseRequestBuilder) {
fields.tagHandler = NewMockPlcTagHandler(t)
*want = &DefaultPlcBrowseRequestBuilder{
tagHandler: NewMockPlcTagHandler(t),
queryStrings: map[string]string{
"a name": "a query",
},
queryNames: []string{"a name"},
}
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if tt.mockSetup != nil {
tt.mockSetup(t, &tt.fields, &tt.args, &tt.want)
}
d := &DefaultPlcBrowseRequestBuilder{
tagHandler: tt.fields.tagHandler,
browser: tt.fields.browser,
Expand Down
1 change: 1 addition & 0 deletions plc4go/spi/model/render_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ func TestRenderTest(t *testing.T) {
}
}

// TODO: ensure mocks are created in test context...
// TestRenderTestCustom test some custom objects
func TestRenderTestCustom(t *testing.T) {
tests := []struct {
Expand Down
Loading

0 comments on commit 5b8995e

Please sign in to comment.