@@ -128,58 +128,141 @@ public function testEdgeCollectionListClauseArrayInput()
128
128
*/
129
129
public function testPruneClause ()
130
130
{
131
- $ result = (new QueryBuilder ())
132
- ->for ('u ' , 'users ' )
133
- ->prune ('u.active ' , '== ' , 'true ' )
131
+ $ qb = (new QueryBuilder ());
132
+ $ qb ->for (['v ' , 'e ' , 'p ' ], '1..5 ' )
133
+ ->traverse ('circles/A ' , 'OUTBOUND ' )
134
+ ->graph ("traversalGraph " )
135
+ ->prune ('e.theTruth ' , '== ' , true )
136
+ ->return ([
137
+ 'vertices ' => 'p.vertices[*]._key ' ,
138
+ 'edges ' => 'p.edges[*].label '
139
+ ])
134
140
->get ();
135
- self ::assertEquals ('FOR u IN users PRUNE u.active == true ' , $ result ->query );
141
+ self ::assertEquals (
142
+ 'FOR v, e, p IN 1..5 OUTBOUND "circles/A" GRAPH "traversalGraph" '
143
+ . ' PRUNE e.theTruth == true '
144
+ . ' RETURN {"vertices":p.vertices[*]._key,"edges":p.edges[*].label} ' ,
145
+ $ qb ->query
146
+ );
136
147
137
- $ result = (new QueryBuilder ())
138
- ->for (' u ' , 'Users ' )
139
- ->prune ( ' u.active ' , '== ' , ' true ' , ' OR ' )
140
- ->get ();
141
- self :: assertEquals ( ' FOR u IN Users PRUNE u.active == true' , $ result -> query );
142
-
143
- $ result = ( new QueryBuilder ())
144
- -> for ( ' u ' , ' Users ' )
145
- -> prune ( ' u.active ' , ' == ' , ' true ' )
148
+ $ qb = (new QueryBuilder ());
149
+ $ qb ->for ([ ' v ' , 'e ' , ' p ' ], ' 1..5 ' )
150
+ ->traverse ( ' circles/A ' , 'OUTBOUND ' )
151
+ ->graph ( " traversalGraph " )
152
+ -> prune ( ' e.theTruth ' , ' == ' , true , ' OR ' )
153
+ -> return ([
154
+ ' vertices ' => ' p.vertices[*]._key ' ,
155
+ ' edges ' => ' p.edges[*].label '
156
+ ] )
146
157
->get ();
147
- self ::assertEquals ('FOR u IN Users PRUNE u.active == true ' , $ result ->query );
158
+ self ::assertEquals (
159
+ 'FOR v, e, p IN 1..5 OUTBOUND "circles/A" GRAPH "traversalGraph" '
160
+ . ' PRUNE e.theTruth == true '
161
+ . ' RETURN {"vertices":p.vertices[*]._key,"edges":p.edges[*].label} ' ,
162
+ $ qb ->query
163
+ );
148
164
}
149
165
150
166
/**
151
167
* @covers \LaravelFreelancerNL\FluentAQL\Clauses\PruneClause
152
168
*/
153
169
public function testPruneClauseWithMultiplePredicates ()
154
170
{
155
- $ result = (new QueryBuilder ())
156
- ->for ('u ' , 'Users ' )
157
- ->prune ([['u.active ' , '== ' , 'true ' ], ['u.age ' , '> ' , 18 ]])
158
- ->get ();
159
- self ::assertEquals ('FOR u IN Users PRUNE u.active == true AND u.age > 18 ' , $ result ->query );
171
+ $ qb = (new QueryBuilder ());
172
+ $ qb ->for (['v ' , 'e ' , 'p ' ], '1..5 ' )
173
+ ->traverse ('circles/A ' , 'OUTBOUND ' )
174
+ ->graph ("traversalGraph " )
175
+ ->prune ([['e.active ' , '== ' , 'true ' ], ['e.age ' , '> ' , 18 ]])
176
+ ->return ([
177
+ 'vertices ' => 'p.vertices[*]._key ' ,
178
+ 'edges ' => 'p.edges[*].label '
179
+ ])
180
+ ->get ();
181
+ self ::assertEquals (
182
+ 'FOR v, e, p IN 1..5 OUTBOUND "circles/A" GRAPH "traversalGraph" '
183
+ . ' PRUNE e.active == true AND e.age > 18 '
184
+ . ' RETURN {"vertices":p.vertices[*]._key,"edges":p.edges[*].label} ' ,
185
+ $ qb ->query
186
+ );
160
187
}
161
188
162
189
/**
163
190
* @covers \LaravelFreelancerNL\FluentAQL\Clauses\PruneClause
164
191
*/
165
192
public function testPruneClauseWithVariable ()
166
193
{
167
- $ result = (new QueryBuilder ())
168
- ->for ('u ' , 'users ' )
169
- ->prune ('u.active ' , '== ' , 'true ' , null , 'pruneCondition ' )
194
+ $ qb = (new QueryBuilder ());
195
+ $ qb ->for (['v ' , 'e ' , 'p ' ], '1..5 ' )
196
+ ->traverse ('circles/A ' , 'OUTBOUND ' )
197
+ ->graph ("traversalGraph " )
198
+ ->prune (
199
+ 'e.theTruth ' ,
200
+ '== ' ,
201
+ true ,
202
+ 'OR ' ,
203
+ 'pruneCondition '
204
+ )
205
+ ->return ([
206
+ 'vertices ' => 'p.vertices[*]._key ' ,
207
+ 'edges ' => 'p.edges[*].label '
208
+ ])
170
209
->get ();
171
- self ::assertEquals ('FOR u IN users PRUNE pruneCondition = u.active == true ' , $ result ->query );
210
+ self ::assertEquals (
211
+ 'FOR v, e, p IN 1..5 OUTBOUND "circles/A" GRAPH "traversalGraph" '
212
+ . ' PRUNE pruneCondition = e.theTruth == true '
213
+ . ' RETURN {"vertices":p.vertices[*]._key,"edges":p.edges[*].label} ' ,
214
+ $ qb ->query
215
+ );
172
216
173
- $ result = (new QueryBuilder ())
174
- ->for ('u ' , 'Users ' )
175
- ->prune ('u.active ' , '== ' , 'true ' , 'OR ' , 'pruneCondition ' )
217
+ $ qb = (new QueryBuilder ());
218
+ $ qb ->for (['v ' , 'e ' , 'p ' ], '1..5 ' )
219
+ ->traverse ('circles/A ' , 'OUTBOUND ' )
220
+ ->graph ("traversalGraph " )
221
+ ->prune (
222
+ [
223
+ 'e.theTruth ' ,
224
+ '== ' ,
225
+ true
226
+ ],
227
+ pruneVariable: 'pruneCondition '
228
+ )
229
+ ->return ([
230
+ 'vertices ' => 'p.vertices[*]._key ' ,
231
+ 'edges ' => 'p.edges[*].label '
232
+ ])
176
233
->get ();
177
- self ::assertEquals ('FOR u IN Users PRUNE pruneCondition = u.active == true ' , $ result ->query );
234
+ self ::assertEquals (
235
+ 'FOR v, e, p IN 1..5 OUTBOUND "circles/A" GRAPH "traversalGraph" '
236
+ . ' PRUNE pruneCondition = e.theTruth == true '
237
+ . ' RETURN {"vertices":p.vertices[*]._key,"edges":p.edges[*].label} ' ,
238
+ $ qb ->query
239
+ );
178
240
179
- $ result = (new QueryBuilder ())
180
- ->for ('u ' , 'Users ' )
181
- ->prune (['u.active ' , '== ' , 'true ' ], pruneVariable: 'pruneCondition ' )
241
+ $ qb = (new QueryBuilder ());
242
+ $ qb ->for (['v ' , 'e ' , 'p ' ], '1..5 ' )
243
+ ->traverse ('circles/A ' , 'OUTBOUND ' )
244
+ ->graph ("traversalGraph " )
245
+ ->prune (
246
+ [
247
+ [
248
+ 'e.theTruth ' , '== ' , true
249
+ ],
250
+ [
251
+ 'e.theTruth ' , '!= ' , false
252
+ ]
253
+ ],
254
+ pruneVariable: 'pruneCondition '
255
+ )
256
+ ->return ([
257
+ 'vertices ' => 'p.vertices[*]._key ' ,
258
+ 'edges ' => 'p.edges[*].label '
259
+ ])
182
260
->get ();
183
- self ::assertEquals ('FOR u IN Users PRUNE pruneCondition = u.active == true ' , $ result ->query );
261
+ self ::assertEquals (
262
+ 'FOR v, e, p IN 1..5 OUTBOUND "circles/A" GRAPH "traversalGraph" '
263
+ . ' PRUNE pruneCondition = e.theTruth == true AND e.theTruth != false '
264
+ . ' RETURN {"vertices":p.vertices[*]._key,"edges":p.edges[*].label} ' ,
265
+ $ qb ->query
266
+ );
184
267
}
185
268
}
0 commit comments