Skip to content

Commit b838f79

Browse files
committed
CSHARP-5473: Add test showing how to translate an Expression using a dummy queryable.
1 parent 55407f7 commit b838f79

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

tests/MongoDB.Driver.Tests/Linq/Linq3Implementation/Jira/CSharp5473Tests.cs

+22-2
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,34 @@ namespace MongoDB.Driver.Tests.Linq.Linq3Implementation.Jira
2323
public class CSharp5473Tests : Linq3IntegrationTest
2424
{
2525
[Fact]
26-
public void Translate_should_work()
26+
public void Translate_queryable_should_work()
2727
{
2828
var collection = GetCollection();
29+
var queryable = collection.AsQueryable()
30+
.Select(x => x.X + 1);
31+
var provider = (IMongoQueryProvider)queryable.Provider;
32+
33+
var stages = provider.Translate(queryable, out var outputSerializer);
34+
AssertStages(stages, "{ $project : { _v : { $add : ['$X', 1] }, _id : 0 } }");
2935

36+
var pipeline = new BsonDocumentStagePipelineDefinition<C, int>(stages, outputSerializer);
37+
var result = collection.Aggregate(pipeline).Single();
38+
result.Should().Be(2);
39+
}
40+
41+
[Fact]
42+
public void Translate_expression_should_work()
43+
{
44+
var collection = GetCollection();
3045
var queryable = collection.AsQueryable()
3146
.Select(x => x.X + 1);
47+
var expression = queryable.Expression; // collection was just used as an easy way to create the Expression
3248

33-
var provider = (IMongoQueryProvider)queryable.Provider;
49+
// this is an example of how to translate an Expression using a dummyQueryable
50+
var client = DriverTestConfiguration.Client;
51+
var dummyDatabase = client.GetDatabase("dummy");
52+
var dummyQueryable = dummyDatabase.AsQueryable().Provider.CreateQuery<C>(expression);
53+
var provider = (IMongoQueryProvider)dummyQueryable.Provider;
3454
var stages = provider.Translate(queryable, out var outputSerializer);
3555
AssertStages(stages, "{ $project : { _v : { $add : ['$X', 1] }, _id : 0 } }");
3656

0 commit comments

Comments
 (0)