@@ -120,16 +120,43 @@ func TestMongoHelpers(t *testing.T) {
120
120
})
121
121
})
122
122
t .Run ("transform aggregate pipeline" , func (t * testing.T ) {
123
+ // []byte of [{{"$limit", 12345}}]
123
124
index , arr := bsoncore .AppendArrayStart (nil )
124
125
dindex , arr := bsoncore .AppendDocumentElementStart (arr , "0" )
125
126
arr = bsoncore .AppendInt32Element (arr , "$limit" , 12345 )
126
127
arr , _ = bsoncore .AppendDocumentEnd (arr , dindex )
127
128
arr , _ = bsoncore .AppendArrayEnd (arr , index )
128
129
130
+ // []byte of {{"x", 1}}
129
131
index , doc := bsoncore .AppendDocumentStart (nil )
130
132
doc = bsoncore .AppendInt32Element (doc , "x" , 1 )
131
133
doc , _ = bsoncore .AppendDocumentEnd (doc , index )
132
134
135
+ // bsoncore.Array of [{{"$merge", {}}}]
136
+ mergeStage := bsoncore .NewDocumentBuilder ().
137
+ StartDocument ("$merge" ).
138
+ FinishDocument ().
139
+ Build ()
140
+ arrMergeStage := bsoncore .NewArrayBuilder ().AppendDocument (mergeStage ).Build ()
141
+
142
+ fooStage := bsoncore .NewDocumentBuilder ().AppendString ("foo" , "bar" ).Build ()
143
+ bazStage := bsoncore .NewDocumentBuilder ().AppendString ("baz" , "qux" ).Build ()
144
+ outStage := bsoncore .NewDocumentBuilder ().AppendString ("$out" , "myColl" ).Build ()
145
+
146
+ // bsoncore.Array of [{{"foo", "bar"}}, {{"baz", "qux"}}, {{"$out", "myColl"}}]
147
+ arrOutStage := bsoncore .NewArrayBuilder ().
148
+ AppendDocument (fooStage ).
149
+ AppendDocument (bazStage ).
150
+ AppendDocument (outStage ).
151
+ Build ()
152
+
153
+ // bsoncore.Array of [{{"foo", "bar"}}, {{"$out", "myColl"}}, {{"baz", "qux"}}]
154
+ arrMiddleOutStage := bsoncore .NewArrayBuilder ().
155
+ AppendDocument (fooStage ).
156
+ AppendDocument (outStage ).
157
+ AppendDocument (bazStage ).
158
+ Build ()
159
+
133
160
testCases := []struct {
134
161
name string
135
162
pipeline interface {}
@@ -388,6 +415,46 @@ func TestMongoHelpers(t *testing.T) {
388
415
false ,
389
416
nil ,
390
417
},
418
+ {
419
+ "bsoncore.Array/success" ,
420
+ bsoncore .Array (arr ),
421
+ bson.A {
422
+ bson.D {{"$limit" , int32 (12345 )}},
423
+ },
424
+ false ,
425
+ nil ,
426
+ },
427
+ {
428
+ "bsoncore.Array/mergeStage" ,
429
+ arrMergeStage ,
430
+ bson.A {
431
+ bson.D {{"$merge" , bson.D {}}},
432
+ },
433
+ true ,
434
+ nil ,
435
+ },
436
+ {
437
+ "bsoncore.Array/outStage" ,
438
+ arrOutStage ,
439
+ bson.A {
440
+ bson.D {{"foo" , "bar" }},
441
+ bson.D {{"baz" , "qux" }},
442
+ bson.D {{"$out" , "myColl" }},
443
+ },
444
+ true ,
445
+ nil ,
446
+ },
447
+ {
448
+ "bsoncore.Array/middleOutStage" ,
449
+ arrMiddleOutStage ,
450
+ bson.A {
451
+ bson.D {{"foo" , "bar" }},
452
+ bson.D {{"$out" , "myColl" }},
453
+ bson.D {{"baz" , "qux" }},
454
+ },
455
+ false ,
456
+ nil ,
457
+ },
391
458
}
392
459
393
460
for _ , tc := range testCases {
0 commit comments