You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2023/05/17 12:05:15 UTC

[plc4x] 04/04: fix(plc4go/spi): gracefully handle tag names not found on WriteResponse

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 0a14655948ed44bb2a62b4ce58a18bad652fb5f7
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Wed May 17 14:05:03 2023 +0200

    fix(plc4go/spi): gracefully handle tag names not found on WriteResponse
---
 plc4go/spi/model/DefaultPlcWriteResponse.go      |  7 +++-
 plc4go/spi/model/DefaultPlcWriteResponse_test.go | 51 +++++++++++++++++++++---
 2 files changed, 50 insertions(+), 8 deletions(-)

diff --git a/plc4go/spi/model/DefaultPlcWriteResponse.go b/plc4go/spi/model/DefaultPlcWriteResponse.go
index 2198cdd648..a16d04b8b0 100644
--- a/plc4go/spi/model/DefaultPlcWriteResponse.go
+++ b/plc4go/spi/model/DefaultPlcWriteResponse.go
@@ -60,6 +60,9 @@ func (d *DefaultPlcWriteResponse) GetRequest() apiModel.PlcWriteRequest {
 }
 
 func (d *DefaultPlcWriteResponse) GetResponseCode(name string) apiModel.PlcResponseCode {
-	// TODO: guard
-	return d.responseCodes[name]
+	code, ok := d.responseCodes[name]
+	if !ok {
+		return apiModel.PlcResponseCode_NOT_FOUND
+	}
+	return code
 }
diff --git a/plc4go/spi/model/DefaultPlcWriteResponse_test.go b/plc4go/spi/model/DefaultPlcWriteResponse_test.go
index 30c49c3244..ae7524d79a 100644
--- a/plc4go/spi/model/DefaultPlcWriteResponse_test.go
+++ b/plc4go/spi/model/DefaultPlcWriteResponse_test.go
@@ -20,9 +20,11 @@
 package model
 
 import (
+	"testing"
+
 	apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
+
 	"github.com/stretchr/testify/assert"
-	"testing"
 )
 
 func TestDefaultPlcWriteResponse_GetRequest(t *testing.T) {
@@ -35,7 +37,9 @@ func TestDefaultPlcWriteResponse_GetRequest(t *testing.T) {
 		fields fields
 		want   apiModel.PlcWriteRequest
 	}{
-		// TODO: Add test cases.
+		{
+			name: "get it",
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -62,7 +66,22 @@ func TestDefaultPlcWriteResponse_GetResponseCode(t *testing.T) {
 		args   args
 		want   apiModel.PlcResponseCode
 	}{
-		// TODO: Add test cases.
+		{
+			name: "get it (not found)",
+			want: apiModel.PlcResponseCode_NOT_FOUND,
+		},
+		{
+			name: "get it",
+			fields: fields{
+				responseCodes: map[string]apiModel.PlcResponseCode{
+					"something": apiModel.PlcResponseCode_OK,
+				},
+			},
+			args: args{
+				name: "something",
+			},
+			want: apiModel.PlcResponseCode_OK,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -85,7 +104,21 @@ func TestDefaultPlcWriteResponse_GetTagNames(t *testing.T) {
 		fields fields
 		want   []string
 	}{
-		// TODO: Add test cases.
+		{
+			name: "get em (none)",
+		},
+		{
+			name: "get em",
+			fields: fields{
+				request: NewDefaultPlcWriteRequest(nil, []string{"a", "b", "c"}, nil, nil, nil),
+				responseCodes: map[string]apiModel.PlcResponseCode{
+					"a": apiModel.PlcResponseCode_OK,
+					"b": apiModel.PlcResponseCode_OK,
+					"c": apiModel.PlcResponseCode_OK,
+				},
+			},
+			want: []string{"a", "b", "c"},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -108,7 +141,10 @@ func TestDefaultPlcWriteResponse_IsAPlcMessage(t *testing.T) {
 		fields fields
 		want   bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "is it",
+			want: true,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -131,7 +167,10 @@ func TestNewDefaultPlcWriteResponse(t *testing.T) {
 		args args
 		want apiModel.PlcWriteResponse
 	}{
-		// TODO: Add test cases.
+		{
+			name: "create it",
+			want: &DefaultPlcWriteResponse{},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {