From 3d4c724c9a80e02cccfb6f342a14021ae58bcf29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20R=C3=BChl?= Date: Wed, 2 Aug 2023 18:04:37 +0200 Subject: [PATCH] test(plc4go): fix broken render test --- plc4go/spi/model/render_test.go | 441 +++++++++++++++++++------------- 1 file changed, 268 insertions(+), 173 deletions(-) diff --git a/plc4go/spi/model/render_test.go b/plc4go/spi/model/render_test.go index 4e799203923..f795d481550 100644 --- a/plc4go/spi/model/render_test.go +++ b/plc4go/spi/model/render_test.go @@ -102,46 +102,56 @@ func TestRenderTest(t *testing.T) { func TestRenderTestCustom(t *testing.T) { tests := []struct { name string - sut interface { + sut func(t *testing.T) interface { fmt.Stringer utils.Serializable } extraCall func(t *testing.T, _sut any) }{ { - sut: NewDefaultPlcBrowseItem( - mockTag(t), - "some name", - "some datatype", - true, - true, - true, - map[string]apiModel.PlcBrowseItem{ - "tagid1": NewMockPlcBrowseItem(t), - "tagid2": NewMockPlcBrowseItem(t), - }, - map[string]apiValues.PlcValue{ - "tagid1": spiValues.PlcNull{}, - "tagid2": spiValues.PlcNull{}, - "tagid3": nil, - }, - ).(interface { // TODO: workaround + sut: func(t *testing.T) interface { fmt.Stringer utils.Serializable - }), + } { + return NewDefaultPlcBrowseItem( + mockTag(t), + "some name", + "some datatype", + true, + true, + true, + map[string]apiModel.PlcBrowseItem{ + "tagid1": mockBrowseItem(t), + "tagid2": mockBrowseItem(t), + }, + map[string]apiValues.PlcValue{ + "tagid1": spiValues.PlcNull{}, + "tagid2": spiValues.PlcNull{}, + "tagid3": nil, + }, + ).(interface { + fmt.Stringer + utils.Serializable + }) + }, }, { - sut: NewDefaultPlcBrowseRequest( - map[string]apiModel.PlcQuery{ - "tagid1": NewMockPlcQuery(t), - "tagid2": NewMockPlcQuery(t), - }, - []string{ - "tagid1", - "tagid2", - }, - nil, - ), + sut: func(t *testing.T) interface { + fmt.Stringer + utils.Serializable + } { + return NewDefaultPlcBrowseRequest( + map[string]apiModel.PlcQuery{ + "tagid1": NewMockPlcQuery(t), + "tagid2": NewMockPlcQuery(t), + }, + []string{ + "tagid1", + "tagid2", + }, + nil, + ) + }, extraCall: func(t *testing.T, _sut any) { sut := _sut.(*DefaultPlcBrowseRequest) // TODO: add browser calls @@ -149,18 +159,23 @@ func TestRenderTestCustom(t *testing.T) { }, }, { - sut: NewDefaultPlcBrowseResponse( - NewDefaultPlcBrowseRequest(nil, nil, nil), - map[string][]apiModel.PlcBrowseItem{ - "tagid": nil, - }, - map[string]apiModel.PlcResponseCode{ - "tagid": 0, - }, - ).(interface { // TODO: workaround + sut: func(t *testing.T) interface { fmt.Stringer utils.Serializable - }), + } { + return NewDefaultPlcBrowseResponse( + NewDefaultPlcBrowseRequest(nil, nil, nil), + map[string][]apiModel.PlcBrowseItem{ + "tagid": nil, + }, + map[string]apiModel.PlcResponseCode{ + "tagid": 0, + }, + ).(interface { // TODO: workaround + fmt.Stringer + utils.Serializable + }) + }, extraCall: func(t *testing.T, _sut any) { sut := _sut.(*DefaultPlcBrowseResponse) // TODO: add assertions @@ -169,199 +184,273 @@ func TestRenderTestCustom(t *testing.T) { }, }, { - sut: NewDefaultPlcBrowseResponseItem(0, nil), + sut: func(t *testing.T) interface { + fmt.Stringer + utils.Serializable + } { + return NewDefaultPlcBrowseResponseItem(0, nil) + }, }, { // TODO: we need a mock here for improvement - sut: NewDefaultPlcConsumerRegistration(nil, nil, nil).(interface { // TODO: workaround + sut: func(t *testing.T) interface { fmt.Stringer utils.Serializable - }), + } { + return NewDefaultPlcConsumerRegistration(nil, nil, nil).(interface { // TODO: workaround + fmt.Stringer + utils.Serializable + }) + }, }, { - sut: NewDefaultPlcDiscoveryItem( - "something", - "something", - url.URL{}, - map[string][]string{ - "something": {"else"}, - }, - "something", - nil, - ).(interface { // TODO: workaround + sut: func(t *testing.T) interface { fmt.Stringer utils.Serializable - }), + } { + return NewDefaultPlcDiscoveryItem( + "something", + "something", + url.URL{}, + map[string][]string{ + "something": {"else"}, + }, + "something", + nil, + ).(interface { // TODO: workaround + fmt.Stringer + utils.Serializable + }) + }, }, { - sut: NewDefaultPlcReadRequest( - map[string]apiModel.PlcTag{ - "tagid": nil, - }, - []string{ - "tagid", - }, - nil, - nil, - ).(interface { // TODO: workaround + sut: func(t *testing.T) interface { fmt.Stringer utils.Serializable - }), + } { + return NewDefaultPlcReadRequest( + map[string]apiModel.PlcTag{ + "tagid": nil, + }, + []string{ + "tagid", + }, + nil, + nil, + ).(interface { // TODO: workaround + fmt.Stringer + utils.Serializable + }) + }, }, { - sut: NewDefaultPlcReadResponse( - NewDefaultPlcReadRequest(nil, nil, nil, nil), - map[string]apiModel.PlcResponseCode{ - "tagid": 0, - }, - map[string]apiValues.PlcValue{ - "tagid": nil, - }, - ).(interface { // TODO: workaround + sut: func(t *testing.T) interface { fmt.Stringer utils.Serializable - }), + } { + return NewDefaultPlcReadResponse( + NewDefaultPlcReadRequest(nil, nil, nil, nil), + map[string]apiModel.PlcResponseCode{ + "tagid": 0, + }, + map[string]apiValues.PlcValue{ + "tagid": nil, + }, + ).(interface { // TODO: workaround + fmt.Stringer + utils.Serializable + }) + }, }, { - sut: NewDefaultPlcSubscriptionEvent( - nil, - map[string]apiModel.PlcTag{ - "tagid": nil, - }, - map[string]apiModel.PlcSubscriptionType{ - "tagid": 0, - }, - map[string]time.Duration{ - "tagid": 0, - }, - map[string]apiModel.PlcResponseCode{ - "tagid": 0, - }, - map[string]apiValues.PlcValue{ - "tagid": nil, - }, - ).(interface { // TODO: workaround + sut: func(t *testing.T) interface { fmt.Stringer utils.Serializable - }), + } { + return NewDefaultPlcSubscriptionEvent( + nil, + map[string]apiModel.PlcTag{ + "tagid": nil, + }, + map[string]apiModel.PlcSubscriptionType{ + "tagid": 0, + }, + map[string]time.Duration{ + "tagid": 0, + }, + map[string]apiModel.PlcResponseCode{ + "tagid": 0, + }, + map[string]apiValues.PlcValue{ + "tagid": nil, + }, + ).(interface { // TODO: workaround + fmt.Stringer + utils.Serializable + }) + }, }, { - sut: NewDefaultPlcSubscriptionEventItem( - 0, - nil, - 0, - 0, - nil, - ), + sut: func(t *testing.T) interface { + fmt.Stringer + utils.Serializable + } { + return NewDefaultPlcSubscriptionEventItem( + 0, + nil, + 0, + 0, + nil, + ) + }, }, { - sut: NewDefaultPlcSubscriptionHandle( - nil, - ).(interface { // TODO: workaround + sut: func(t *testing.T) interface { fmt.Stringer utils.Serializable - }), + } { + return NewDefaultPlcSubscriptionHandle( + nil, + ).(interface { // TODO: workaround + fmt.Stringer + utils.Serializable + }) + }, }, { - sut: NewDefaultPlcSubscriptionRequest( - nil, - []string{"tagid"}, - map[string]apiModel.PlcSubscriptionTag{ - "tagid": nil, - }, - map[string]apiModel.PlcSubscriptionType{ - "tagid": 0, - }, - map[string]time.Duration{ - "tagid": 0, - }, - map[string][]apiModel.PlcSubscriptionEventConsumer{ - "tagd": nil, - }, - ).(interface { // TODO: workaround + sut: func(t *testing.T) interface { fmt.Stringer utils.Serializable - }), + } { + return NewDefaultPlcSubscriptionRequest( + nil, + []string{"tagid"}, + map[string]apiModel.PlcSubscriptionTag{ + "tagid": nil, + }, + map[string]apiModel.PlcSubscriptionType{ + "tagid": 0, + }, + map[string]time.Duration{ + "tagid": 0, + }, + map[string][]apiModel.PlcSubscriptionEventConsumer{ + "tagd": nil, + }, + ).(interface { // TODO: workaround + fmt.Stringer + utils.Serializable + }) + }, }, { - sut: NewDefaultPlcSubscriptionResponse( - NewDefaultPlcSubscriptionRequest(nil, nil, nil, nil, nil, nil), - map[string]apiModel.PlcResponseCode{ - "tagid": 0, - }, - map[string]apiModel.PlcSubscriptionHandle{ - "tagid": nil, - }, - ).(interface { // TODO: workaround + sut: func(t *testing.T) interface { fmt.Stringer utils.Serializable - }), + } { + return NewDefaultPlcSubscriptionResponse( + NewDefaultPlcSubscriptionRequest(nil, nil, nil, nil, nil, nil), + map[string]apiModel.PlcResponseCode{ + "tagid": 0, + }, + map[string]apiModel.PlcSubscriptionHandle{ + "tagid": nil, + }, + ).(interface { // TODO: workaround + fmt.Stringer + utils.Serializable + }) + }, }, { - sut: NewDefaultPlcSubscriptionResponseItem( - 0, - NewDefaultPlcSubscriptionHandle(nil), - ), + sut: func(t *testing.T) interface { + fmt.Stringer + utils.Serializable + } { + return NewDefaultPlcSubscriptionResponseItem( + 0, + NewDefaultPlcSubscriptionHandle(nil), + ) + }, }, { - sut: NewDefaultPlcTagRequest( - map[string]apiModel.PlcTag{ - "tagid": nil, - }, - []string{"tagid"}, - ), + sut: func(t *testing.T) interface { + fmt.Stringer + utils.Serializable + } { + return NewDefaultPlcTagRequest( + map[string]apiModel.PlcTag{ + "tagid": nil, + }, + []string{"tagid"}, + ) + }, }, { - sut: NewDefaultPlcUnsubscriptionRequestResult( - NewDefaultPlcUnsubscriptionRequest(nil), - NewDefaultPlcUnsubscriptionResponse(nil), - nil, - ).(interface { // TODO: workaround + sut: func(t *testing.T) interface { fmt.Stringer utils.Serializable - }), + } { + return NewDefaultPlcUnsubscriptionRequestResult( + NewDefaultPlcUnsubscriptionRequest(nil), + NewDefaultPlcUnsubscriptionResponse(nil), + nil, + ).(interface { // TODO: workaround + fmt.Stringer + utils.Serializable + }) + }, }, { - sut: NewDefaultPlcWriteRequest( - map[string]apiModel.PlcTag{ - "tagid": nil, - }, - []string{"tagid"}, - map[string]apiValues.PlcValue{ - "tageid": nil, - }, - nil, - nil, - ).(interface { // TODO: workaround + sut: func(t *testing.T) interface { fmt.Stringer utils.Serializable - }), + } { + return NewDefaultPlcWriteRequest( + map[string]apiModel.PlcTag{ + "tagid": nil, + }, + []string{"tagid"}, + map[string]apiValues.PlcValue{ + "tageid": nil, + }, + nil, + nil, + ).(interface { // TODO: workaround + fmt.Stringer + utils.Serializable + }) + }, }, { - sut: NewDefaultPlcWriteResponse( - NewDefaultPlcWriteRequest(nil, nil, nil, nil, nil), - map[string]apiModel.PlcResponseCode{ - "tagid": 0, - }, - ).(interface { // TODO: workaround + sut: func(t *testing.T) interface { fmt.Stringer utils.Serializable - }), + } { + return NewDefaultPlcWriteResponse( + NewDefaultPlcWriteRequest(nil, nil, nil, nil, nil), + map[string]apiModel.PlcResponseCode{ + "tagid": 0, + }, + ).(interface { // TODO: workaround + fmt.Stringer + utils.Serializable + }) + }, }, } for _, tt := range tests { sut := tt.sut - testName := fmt.Sprintf("%T", sut) + testName := fmt.Sprintf("%T", sut(t)) if tt.name != "" { testName += " - " + tt.name } - testName += fmt.Sprintf("%T", sut) t.Run(testName, func(t *testing.T) { t.Run("String", func(t *testing.T) { - assert.NotEmptyf(t, sut.String(), "string should at least return type informations") + assert.NotEmptyf(t, sut(t).String(), "string should at least return type informations") }) t.Run("Get*/IsÜ*", func(t *testing.T) { - valueOf := reflect.ValueOf(sut) + valueOf := reflect.ValueOf(sut(t)) for i := 0; i < valueOf.NumMethod(); i++ { method := valueOf.Method(i) methodName := valueOf.Type().Method(i).Name @@ -377,19 +466,25 @@ func TestRenderTestCustom(t *testing.T) { } }) t.Run("Serialize", func(t *testing.T) { - serialize, err := sut.Serialize() + serialize, err := sut(t).Serialize() assert.NoError(t, err) _ = serialize }) if tt.extraCall != nil { t.Run("extra call", func(t *testing.T) { - tt.extraCall(t, sut) + tt.extraCall(t, sut(t)) }) } }) } } +func mockBrowseItem(t *testing.T) *MockPlcBrowseItem { + item := NewMockPlcBrowseItem(t) + item.EXPECT().String().Return("mocktag").Maybe() + return item +} + func mockTag(t *testing.T) *MockPlcTag { tag := NewMockPlcTag(t) tag.EXPECT().String().Return("mocktag").Maybe()