@@ -23,14 +23,34 @@ namespace MongoDB.Driver.Tests.Linq.Linq3Implementation.Jira
23
23
public class CSharp5473Tests : Linq3IntegrationTest
24
24
{
25
25
[ Fact ]
26
- public void Translate_should_work ( )
26
+ public void Translate_queryable_should_work ( )
27
27
{
28
28
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 } }" ) ;
29
35
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 ( ) ;
30
45
var queryable = collection . AsQueryable ( )
31
46
. Select ( x => x . X + 1 ) ;
47
+ var expression = queryable . Expression ; // collection was just used as an easy way to create the Expression
32
48
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 ;
34
54
var stages = provider . Translate ( queryable , out var outputSerializer ) ;
35
55
AssertStages ( stages , "{ $project : { _v : { $add : ['$X', 1] }, _id : 0 } }" ) ;
36
56
0 commit comments