Skip to content

Commit f1a6b5d

Browse files
authored
Merge pull request #135 from microsoft/andrueastman/multidimensionalArrays
Validates multidimensional collections scenarios using UntypedNode
2 parents 5ec927c + 70ad2fc commit f1a6b5d

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

internal/untyped_test_entity.go

+26
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ type UntypedTestEntity struct {
1111
location absser.UntypedNodeable
1212
keywords absser.UntypedNodeable
1313
detail absser.UntypedNodeable
14+
table absser.UntypedNodeable
1415
}
1516

1617
type TestUntypedTestEntityable interface {
@@ -26,6 +27,8 @@ type TestUntypedTestEntityable interface {
2627
SetKeywords(value absser.UntypedNodeable)
2728
GetDetail() absser.UntypedNodeable
2829
SetDetail(value absser.UntypedNodeable)
30+
GetTable() absser.UntypedNodeable
31+
SetTable(value absser.UntypedNodeable)
2932
}
3033

3134
func NewUntypedTestEntity() *UntypedTestEntity {
@@ -80,6 +83,13 @@ func (e *UntypedTestEntity) SetDetail(value absser.UntypedNodeable) {
8083
e.detail = value
8184
}
8285

86+
func (e *UntypedTestEntity) GetTable() absser.UntypedNodeable {
87+
return e.table
88+
}
89+
func (e *UntypedTestEntity) SetTable(value absser.UntypedNodeable) {
90+
e.table = value
91+
}
92+
8393
func (e *UntypedTestEntity) GetFieldDeserializers() map[string]func(absser.ParseNode) error {
8494
res := make(map[string]func(absser.ParseNode) error)
8595
res["id"] = func(n absser.ParseNode) error {
@@ -132,6 +142,16 @@ func (e *UntypedTestEntity) GetFieldDeserializers() map[string]func(absser.Parse
132142
}
133143
return nil
134144
}
145+
res["table"] = func(n absser.ParseNode) error {
146+
val, err := n.GetObjectValue(absser.CreateUntypedNodeFromDiscriminatorValue)
147+
if err != nil {
148+
return err
149+
}
150+
if val != nil {
151+
e.SetTable(val.(absser.UntypedNodeable))
152+
}
153+
return nil
154+
}
135155
return res
136156
}
137157

@@ -166,6 +186,12 @@ func (m *UntypedTestEntity) Serialize(writer absser.SerializationWriter) error {
166186
return err
167187
}
168188
}
189+
{
190+
err := writer.WriteObjectValue("table", m.GetTable())
191+
if err != nil {
192+
return err
193+
}
194+
}
169195
{
170196
err := writer.WriteAdditionalData(m.GetAdditionalData())
171197
if err != nil {

json_parse_node_test.go

+14-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package jsonserialization
22

33
import (
4+
"testing"
5+
46
"github.com/microsoft/kiota-serialization-json-go/internal"
57
"github.com/stretchr/testify/require"
6-
"testing"
78

89
absser "github.com/microsoft/kiota-abstractions-go/serialization"
910
"github.com/stretchr/testify/assert"
@@ -269,6 +270,17 @@ func TestUntypedJsonObject(t *testing.T) {
269270

270271
additionalData := testEntity.GetAdditionalData()
271272
assert.NotNil(t, additionalData)
273+
274+
table := testEntity.GetTable().(*absser.UntypedArray)
275+
assert.NotNil(t, untypedArray)
276+
for _, row := range table.GetValue() {
277+
rowValue := row.(*absser.UntypedArray)
278+
assert.NotNil(t, rowValue)
279+
for _, cell := range rowValue.GetValue() {
280+
cellValue := cell.(*absser.UntypedDouble)
281+
assert.NotNil(t, cellValue)
282+
}
283+
}
272284
}
273285

274286
const TestUntypedJson = "{\r\n" +
@@ -306,6 +318,7 @@ const TestUntypedJson = "{\r\n" +
306318
" }\r\n" +
307319
" ],\r\n" +
308320
" \"detail\": null,\r\n" +
321+
" \"table\": [[1,2,3],[4,5,6],[7,8,9]],\r\n" +
309322
" \"extra\": {\r\n" +
310323
" \"createdDateTime\":\"2024-01-15T00:00:00\\u002B00:00\"\r\n" +
311324
" }\r\n" +

0 commit comments

Comments
 (0)