forked from mindstand/go-cypherdsl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
merge_test.go
149 lines (118 loc) · 3.69 KB
/
merge_test.go
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
package go_cypherdsl
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestMergeSetConfig_ToString(t *testing.T) {
t1 := MergeSetConfig{Name: "test", Member: "ttt", Target: 1}
t2 := MergeSetConfig{Name: "test", Member: "ttt", TargetFunction: &FunctionConfig{
Name: "test",
}}
t3 := MergeSetConfig{Name: "test"}
t4 := MergeSetConfig{}
t5 := MergeSetConfig{Name: "test", Member: "ttt"}
t6 := MergeSetConfig{Name: "test", Member: "ttt", TargetFunction: &FunctionConfig{Name: "test"}, Target: 1}
t7 := MergeSetConfig{Name: "test", Member: "ttt", TargetFunction: &FunctionConfig{Name: "test"}, Operator: EqualToOperator}
t8 := MergeSetConfig{Name: "test", Member: "ttt", TargetFunction: &FunctionConfig{Name: "test"}, Operator: PlusEqualOperator}
t9 := MergeSetConfig{Name: "test", Target: ParamString("$props"), Operator: EqualToOperator}
t10 := MergeSetConfig{Name: "test", Target: ParamString("$props"), Operator: PlusEqualOperator}
t11 := MergeSetConfig{Name: "test", Target: ParamString("$props"), Operator: ContainsOperator}
req := require.New(t)
var err error
var cypher string
//name member normal target
cypher, err = t1.ToString()
req.Nil(err)
req.EqualValues("test.ttt = 1", cypher)
//name member target function
cypher, err = t2.ToString()
req.Nil(err)
req.EqualValues("test.ttt = test()", cypher)
//error - member not defined
_, err = t3.ToString()
req.NotNil(err)
//error - member and name not defined
_, err = t4.ToString()
req.NotNil(err)
//error - target and target function not defined
_, err = t5.ToString()
req.NotNil(err)
//error - target and target function defined
_, err = t6.ToString()
req.NotNil(err)
//name member target function operator
cypher, err = t7.ToString()
req.Nil(err)
req.EqualValues("test.ttt = test()", cypher)
//error - invalid operator defined
_, err = t8.ToString()
req.NotNil(err)
//name target operator
cypher, err = t9.ToString()
req.Nil(err)
req.EqualValues("test = $props", cypher)
//name target operator
cypher, err = t10.ToString()
req.Nil(err)
req.EqualValues("test += $props", cypher)
//error - invalid operator defined
_, err = t11.ToString()
req.NotNil(err)
}
func TestMergeConfig_ToString(t *testing.T) {
t1 := MergeConfig{Path: "test"}
t2 := MergeConfig{Path: "test", OnCreate: &MergeSetConfig{
Name: "test",
Member: "ttt",
Target: 1,
}}
t3 := MergeConfig{Path: "test", OnMatch: &MergeSetConfig{
Name: "test",
Member: "ttt",
Target: 1,
}}
t4 := MergeConfig{Path: "test", OnMatch: &MergeSetConfig{
Name: "test",
Member: "ttt",
Target: 1,
}, OnCreate: &MergeSetConfig{
Name: "test",
Member: "tt1",
Target: 2,
}}
t5 := MergeConfig{}
t6 := MergeConfig{Path: "test", OnMatch: &MergeSetConfig{
Name: "test",
Target: ParamString("$props"),
Operator: PlusEqualOperator,
}, OnCreate: &MergeSetConfig{
Name: "test",
Target: ParamString("$props"),
}}
req := require.New(t)
var err error
var cypher string
//only merge
cypher, err = t1.ToString()
req.Nil(err)
req.EqualValues("test", cypher)
//merge with on create
cypher, err = t2.ToString()
req.Nil(err)
req.EqualValues("test ON CREATE SET test.ttt = 1", cypher)
//merge with on match
cypher, err = t3.ToString()
req.Nil(err)
req.EqualValues("test ON MATCH SET test.ttt = 1", cypher)
//merge with on create and on match
cypher, err = t4.ToString()
req.Nil(err)
req.EqualValues("test ON CREATE SET test.tt1 = 2 ON MATCH SET test.ttt = 1", cypher)
//error - path not defined
_, err = t5.ToString()
req.NotNil(err)
//merge with on create and on match set to param string
cypher, err = t6.ToString()
req.Nil(err)
req.EqualValues("test ON CREATE SET test = $props ON MATCH SET test += $props", cypher)
}