@@ -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