@@ -240,6 +240,50 @@ public void Out_should_add_the_expected_stage_and_call_Aggregate(
240
240
}
241
241
}
242
242
243
+ [ Theory ]
244
+ [ ParameterAttributeData ]
245
+ public void ReplaceRoot_should_add_the_expected_stage(
246
+ [ Values ( false , true ) ]
247
+ bool async)
248
+ {
249
+ var subject = CreateSubject( ) ;
250
+
251
+ var result = subject
252
+ . ReplaceRoot < BsonDocument > ( "$X" ) ;
253
+
254
+ Predicate< PipelineDefinition < C , BsonDocument > > isExpectedPipeline = pipeline =>
255
+ {
256
+ var renderedPipeline = RenderPipeline ( pipeline ) ;
257
+ return
258
+ renderedPipeline . Documents . Count == 1 &&
259
+ renderedPipeline . Documents [ 0 ] == BsonDocument . Parse ( "{ $replaceRoot : { newRoot : '$X' } }" ) &&
260
+ renderedPipeline . OutputSerializer . ValueType == typeof ( BsonDocument ) ;
261
+ } ;
262
+
263
+ if ( async)
264
+ {
265
+ result . ToCursorAsync ( ) . GetAwaiter ( ) . GetResult ( ) ;
266
+
267
+ _mockCollection. Verify (
268
+ c => c . AggregateAsync < BsonDocument > (
269
+ It . Is < PipelineDefinition < C , BsonDocument > > ( pipeline => isExpectedPipeline ( pipeline ) ) ,
270
+ It . IsAny < AggregateOptions > ( ) ,
271
+ CancellationToken . None ) ,
272
+ Times . Once ) ;
273
+ }
274
+ else
275
+ {
276
+ result. ToCursor ( ) ;
277
+
278
+ _mockCollection. Verify (
279
+ c => c . Aggregate < BsonDocument > (
280
+ It . Is < PipelineDefinition < C , BsonDocument > > ( pipeline => isExpectedPipeline ( pipeline ) ) ,
281
+ It . IsAny < AggregateOptions > ( ) ,
282
+ CancellationToken . None ) ,
283
+ Times . Once ) ;
284
+ }
285
+ }
286
+
243
287
[ Theory ]
244
288
[ ParameterAttributeData ]
245
289
public void SortByCount_should_add_the_expected_stage(
0 commit comments