File: edge_test.go

package info (click to toggle)
golang-github-facebook-ent 0.5.4-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 14,284 kB
  • sloc: javascript: 349; makefile: 8
file content (108 lines) | stat: -rw-r--r-- 2,127 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
// Copyright 2019-present Facebook Inc. All rights reserved.
// This source code is licensed under the Apache 2.0 license found
// in the LICENSE file in the root directory of this source tree.

package graph

import (
	"fmt"
	"testing"

	"github.com/facebook/ent/dialect/gremlin/encoding/graphson"

	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"
)

func TestEdgeString(t *testing.T) {
	e := NewEdge(
		13, "develops",
		NewVertex(1, ""),
		NewVertex(10, ""),
	)
	assert.Equal(t, "e[13][1-develops->10]", fmt.Sprint(e))
}

func TestEdgeEncoding(t *testing.T) {
	t.Parallel()

	e := NewEdge(13, "develops",
		NewVertex(1, "person"),
		NewVertex(10, "software"),
	)
	got, err := graphson.MarshalToString(e)
	require.NoError(t, err)

	want := `{
		"@type" : "g:Edge",
		"@value" : {
			"id" : {
			  "@type" : "g:Int64",
			  "@value" : 13
			},
			"label" : "develops",
			"inVLabel" : "software",
			"outVLabel" : "person",
			"inV" : {
			  "@type" : "g:Int64",
			  "@value" : 10
			},
			"outV" : {
			  "@type" : "g:Int64",
			  "@value" : 1
			}
		}
	}`
	assert.JSONEq(t, want, got)

	e = Edge{}
	err = graphson.UnmarshalFromString(got, &e)
	require.NoError(t, err)

	assert.Equal(t, NewElement(int64(13), "develops"), e.Element)
	assert.Equal(t, NewVertex(int64(1), "person"), e.OutV)
	assert.Equal(t, NewVertex(int64(10), "software"), e.InV)
}

func TestPropertyEncoding(t *testing.T) {
	t.Parallel()

	props := []Property{
		NewProperty("from", int32(2017)),
		NewProperty("to", int32(2019)),
	}
	got, err := graphson.MarshalToString(props)
	require.NoError(t, err)

	want := `{
		"@type" : "g:List",
		"@value" : [
			{
				"@type" : "g:Property",
				"@value" : {
					"key" : "from",
					"value" : {
						"@type" : "g:Int32",
						"@value" : 2017
					}
				}
			},
			{
				"@type" : "g:Property",
				"@value" : {
					"key" : "to",
					"value" : {
						"@type" : "g:Int32",
						"@value" : 2019
					}
				}
			}
		]
	}`
	assert.JSONEq(t, want, got)
}

func TestPropertyString(t *testing.T) {
	p := NewProperty("since", 2019)
	assert.Equal(t, "p[since->2019]", fmt.Sprint(p))
}