From 3c35c9a58464b0e3cefae0e3e1233557addbd6c3 Mon Sep 17 00:00:00 2001 From: Nikita Wootten Date: Tue, 11 Jan 2022 22:27:50 -0500 Subject: [PATCH] Added tests for `traverseResultRecordValues` --- decoder_test.go | 67 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/decoder_test.go b/decoder_test.go index 74e138a..683baa6 100644 --- a/decoder_test.go +++ b/decoder_test.go @@ -30,6 +30,73 @@ import ( "github.com/stretchr/testify/require" ) +func TestTraverseResultRecordValues(t *testing.T) { + req := require.New(t) + + // empty case + pArr, rArr, nArr := traverseResultRecordValues([]interface{}{}) + req.Len(pArr, 0) + req.Len(rArr, 0) + req.Len(nArr, 0) + + // garbage record case + pArr, rArr, nArr = traverseResultRecordValues([]interface{}{"hello", []interface{}{"there"}}) + req.Len(pArr, 0) + req.Len(rArr, 0) + req.Len(nArr, 0) + + // define our test paths, rels, and nodes + p1 := neo4j.Path{ + Nodes: []neo4j.Node{ + { + Id: 1, + Labels: []string{"start"}, + }, + { + Id: 2, + Labels: []string{"end"}, + }, + }, + Relationships: []neo4j.Relationship{ + { + Id: 3, + StartId: 1, + EndId: 2, + Type: "someType", + }, + }, + } + + n1 := neo4j.Node{ + Id: 4, + Labels: []string{"start"}, + } + + n2 := neo4j.Node{ + Id: 5, + Labels: []string{"end"}, + } + + r1 := neo4j.Relationship{ + Id: 6, + StartId: 4, + EndId: 5, + Type: "someType", + } + + // normal case (paths, nodes, and rels, but no nested results) + pArr, rArr, nArr = traverseResultRecordValues([]interface{}{p1, n1, n2, r1}) + req.Equal(pArr[0], p1) + req.Equal(rArr[0], r1) + req.ElementsMatch(nArr, []interface{}{n1, n2}) + + // case with nested nodes and rels + pArr, rArr, nArr = traverseResultRecordValues([]interface{}{p1, []interface{}{n1, n2, r1}}) + req.Equal(pArr[0], p1) + req.Equal(rArr[0], r1) + req.ElementsMatch(nArr, []interface{}{n1, n2}) +} + type TestStruct struct { Id *int64 UUID string