Skip to content

Commit 9e8e525

Browse files
committed
CSHARP-2723: Refactor Linq3TestHelpers Translate method to not use Stages property.
1 parent 0a210b5 commit 9e8e525

File tree

2 files changed

+8
-11
lines changed

2 files changed

+8
-11
lines changed

src/MongoDB.Driver/AggregateFluent.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ public override AggregateOptions Options
4444
get { return _options; }
4545
}
4646

47+
public PipelineDefinition<TInput, TResult> Pipeline => _pipeline;
48+
4749
public override IList<IPipelineStageDefinition> Stages
4850
{
4951
get { return _pipeline.Stages.ToList(); }

tests/MongoDB.Driver.Tests/Linq/Linq3ImplementationTests/Linq3TestHelpers.cs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
using FluentAssertions;
1919
using MongoDB.Bson;
2020
using MongoDB.Bson.Serialization;
21+
using MongoDB.Bson.TestHelpers;
2122
using MongoDB.Driver.Linq;
2223
using MongoDB.Driver.Linq.Linq3Implementation;
2324
using MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToExecutableQueryTranslators;
@@ -33,18 +34,12 @@ public static void AssertStages(IEnumerable<BsonDocument> stages, IEnumerable<st
3334

3435
public static List<BsonDocument> Translate<TDocument, TResult>(IMongoCollection<TDocument> collection, IAggregateFluent<TResult> aggregate)
3536
{
36-
var renderedStages = new List<BsonDocument>();
37-
38-
IBsonSerializer inputSerializer = collection.DocumentSerializer;
37+
var pipelineDefinition = ((AggregateFluent<TDocument, TResult>)aggregate).Pipeline;
38+
var documentSerializer = collection.DocumentSerializer;
3939
var serializerRegistry = BsonSerializer.SerializerRegistry;
40-
foreach (var stage in aggregate.Stages)
41-
{
42-
var renderedStage = stage.Render(inputSerializer, serializerRegistry, LinqProvider.V3);
43-
renderedStages.Add(renderedStage.Document);
44-
inputSerializer = renderedStage.OutputSerializer;
45-
}
46-
47-
return renderedStages;
40+
var linqProvider = collection.Database.Client.Settings.LinqProvider;
41+
var renderedPipeline = pipelineDefinition.Render(documentSerializer, serializerRegistry, linqProvider);
42+
return renderedPipeline.Documents.ToList();
4843
}
4944

5045
// in this overload the collection argument is used only to infer the TDocument type

0 commit comments

Comments
 (0)