From b6ac1e8114d1d12947bee7d4ff508214cef99992 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Sun, 11 Dec 2022 16:17:55 -0800 Subject: [PATCH] fix serialization casing --- d2graph/serde.go | 3 ++- d2graph/serde_test.go | 34 +++++++++++++++++++++++++--------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/d2graph/serde.go b/d2graph/serde.go index e5a8b1fbc..76e83ae2c 100644 --- a/d2graph/serde.go +++ b/d2graph/serde.go @@ -2,6 +2,7 @@ package d2graph import ( "encoding/json" + "strings" "oss.terrastruct.com/util-go/go2" ) @@ -48,7 +49,7 @@ func DeserializeGraph(bytes []byte, g *Graph) error { for _, id := range so["ChildrenArray"].([]interface{}) { o := idToObj[id.(string)] childrenArray = append(childrenArray, o) - children[id.(string)] = o + children[strings.ToLower(id.(string))] = o o.Parent = idToObj[so["AbsID"].(string)] } diff --git a/d2graph/serde_test.go b/d2graph/serde_test.go index 2afc65cbb..070400f20 100644 --- a/d2graph/serde_test.go +++ b/d2graph/serde_test.go @@ -14,9 +14,7 @@ func TestSerialization(t *testing.T) { t.Parallel() g, err := d2compiler.Compile("", strings.NewReader("a.a.b -> a.a.c"), nil) - if err != nil { - t.Fatal(err) - } + assert.Nil(t, err) asserts := func(g *d2graph.Graph) { assert.Equal(t, 4, len(g.Objects)) @@ -41,15 +39,33 @@ func TestSerialization(t *testing.T) { asserts(g) b, err := d2graph.SerializeGraph(g) - if err != nil { - t.Fatal(err) - } + assert.Nil(t, err) var newG d2graph.Graph err = d2graph.DeserializeGraph(b, &newG) - if err != nil { - t.Fatal(err) - } + assert.Nil(t, err) asserts(&newG) } + +func TestCasingRegression(t *testing.T) { + t.Parallel() + + script := `UserCreatedTypeField` + + g, err := d2compiler.Compile("", strings.NewReader(script), nil) + assert.Nil(t, err) + + _, ok := g.Root.HasChild([]string{"UserCreatedTypeField"}) + assert.True(t, ok) + + b, err := d2graph.SerializeGraph(g) + assert.Nil(t, err) + + var newG d2graph.Graph + err = d2graph.DeserializeGraph(b, &newG) + assert.Nil(t, err) + + _, ok = newG.Root.HasChild([]string{"UserCreatedTypeField"}) + assert.True(t, ok) +}