Skip to content

Commit

Permalink
Merge pull request #22 from lixingwang/complex_object_issue
Browse files Browse the repository at this point in the history
Fix issue that check if complex object or not.
  • Loading branch information
Frank Martinez authored Aug 29, 2019
2 parents 7ffc43f + c614774 commit 958085c
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 3 deletions.
15 changes: 12 additions & 3 deletions types.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,21 @@ func GetComplexObjectInfo(val interface{}) (interface{}, string, bool) {
if val == "" {
return nil, "", false
} else {
complexObject := &legacyData.ComplexObject{}
err := json.Unmarshal([]byte(t), complexObject)
var complexMap map[string]interface{}
err := json.Unmarshal([]byte(t), &complexMap)
if err != nil {
return nil, "", false
}
return complexObject.Value, complexObject.Metadata, true

v, hasVal := complexMap["value"]
mdI, hasMd := complexMap["metadata"]
md := ""
if hasMd {
md, hasMd = mdI.(string)
}
if hasVal && hasMd {
return v, md, true
}
}
case map[string]interface{}:
v, hasVal := t["value"]
Expand Down
30 changes: 30 additions & 0 deletions types_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package legacybridge

import (
"github.com/stretchr/testify/assert"
"testing"
)

func TestGetComplexObjectInfo(t *testing.T) {

cpx := `{"value":"123", "metadata":"medatat"}`
v, metadata, ok := GetComplexObjectInfo(cpx)
assert.True(t, ok)
assert.Equal(t, "medatat", metadata)
assert.Equal(t, "123", v)

cpx = `{"value":"123"}`
v, metadata, ok = GetComplexObjectInfo(cpx)
assert.False(t, ok)

cpx = `{"metadata":"123"}`
v, metadata, ok = GetComplexObjectInfo(cpx)
assert.False(t, ok)

cpx = `{"value":"", "metadata":""}`
v, metadata, ok = GetComplexObjectInfo(cpx)
assert.True(t, ok)
assert.Equal(t, "", metadata)
assert.Equal(t, "", v)

}

0 comments on commit 958085c

Please sign in to comment.