public void SingleExpansionBecomesExpand()
 {
     SelectExpandPathBuilder pathBuilder = new SelectExpandPathBuilder();
     ParameterExpression pe = Expression.Parameter((typeof(TestEntity)));
     pathBuilder.PushParamExpression(pe);
     PropertyInfo navPropPropertyInfo = typeof(TestEntity).GetProperties().Single(x => x.PropertyType == typeof(SubTestEntity1));
     pathBuilder.StartNewPath();
     pathBuilder.AppendPropertyToPath(navPropPropertyInfo, null, dsc);
     pathBuilder.ExpandPaths.Single().Should().Be("NavProp1");
 }
 public void SingleProjectionBecomesSelect()
 {
     PropertyInfo testProperty1Info = typeof(TestEntity).GetProperties().Single(x => x.Name == "TestProperty1");
     SelectExpandPathBuilder pathBuilder = new SelectExpandPathBuilder();
     ParameterExpression pe = Expression.Parameter(typeof(TestEntity));
     pathBuilder.PushParamExpression(pe);
     pathBuilder.StartNewPath();
     pathBuilder.AppendPropertyToPath(testProperty1Info, null, this.dsc);
     pathBuilder.ProjectionPaths.Single().Should().Be("TestProperty1");
 }
 public void MultipleSingleLevelProjectionsBecomeSelectClauses()
 {
     SelectExpandPathBuilder pathBuilder = new SelectExpandPathBuilder();
     ParameterExpression pe = Expression.Parameter(typeof(TestEntity));
     pathBuilder.PushParamExpression(pe);
     foreach (PropertyInfo propertyInfo in typeof(TestEntity).GetProperties().Where(x => x.PropertyType == typeof(string)))
     {
         pathBuilder.StartNewPath();
         pathBuilder.AppendPropertyToPath(propertyInfo, null, this.dsc);
     }
     pathBuilder.ProjectionPaths.Should().HaveCount(2);
     pathBuilder.ProjectionPaths.Should().Contain(x => x == "TestProperty1")
         .And.Contain(x => x == "TestProperty2");
 }
 public void TypeIsPrePendedAsATypeSegment()
 {
     SelectExpandPathBuilder pathBuilder = new SelectExpandPathBuilder();
     ParameterExpression pe = Expression.Parameter(typeof(TestEntity));
     PropertyInfo testProperty1Info = typeof(TestEntity).GetProperties().Single(x => x.Name == "TestProperty1");
     pathBuilder.PushParamExpression(pe);
     pathBuilder.StartNewPath();
     pathBuilder.AppendPropertyToPath(testProperty1Info, typeof(TestEntity), dsc);
     pathBuilder.ProjectionPaths.Single().Should().Be("AstoriaUnitTests.Tests.ALinq.SelectExpandPathBuilderTests+TestEntity/TestProperty1");
 }
 public void PushingANewParameterExpressionResetsTheBasePath()
 {
     SelectExpandPathBuilder pathBuilder = new SelectExpandPathBuilder();
     ParameterExpression pe1 = Expression.Parameter(typeof(TestEntity), "pe1");
     ParameterExpression pe2 = Expression.Parameter(typeof(SubTestEntity1), "pe2");
     PropertyInfo navPropInfo = typeof(TestEntity).GetProperties().Single(x => x.Name == "NavProp1");
     PropertyInfo subNavPropInfo = typeof(SubTestEntity1).GetProperties().Single(x => x.Name == "NavProp3");
     PropertyInfo subTestProperty = typeof(SubTestEntity2).GetProperties().Single();
     pathBuilder.PushParamExpression(pe1);
     pathBuilder.StartNewPath();
     pathBuilder.AppendPropertyToPath(navPropInfo, null, dsc);
     pathBuilder.AppendPropertyToPath(subNavPropInfo, null, dsc);
     pathBuilder.PushParamExpression(pe2);
     pathBuilder.StartNewPath();
     pathBuilder.AppendPropertyToPath(subTestProperty, null, dsc);
     pathBuilder.ExpandPaths.Single().Should().Be("NavProp1($expand=NavProp3($select=SubTestProperty))");
 }
 public void SelectingLowerLevelPropertyIsTranslatedIntoExpandOption()
 {
     SelectExpandPathBuilder pathBuilder = new SelectExpandPathBuilder();
     ParameterExpression pe = Expression.Parameter(typeof(TestEntity));
     PropertyInfo navPropInfo = typeof(TestEntity).GetProperties().Single(x => x.Name == "NavProp1");
     PropertyInfo subNavPropInfo = typeof(SubTestEntity1).GetProperties().Single(x => x.Name == "NavProp3");
     PropertyInfo subTestProperty = typeof(SubTestEntity2).GetProperties().Single();
     pathBuilder.PushParamExpression(pe);
     pathBuilder.StartNewPath();
     pathBuilder.AppendPropertyToPath(navPropInfo, null, dsc);
     pathBuilder.AppendPropertyToPath(subNavPropInfo, null, dsc);
     pathBuilder.AppendPropertyToPath(subTestProperty, null, dsc);
     pathBuilder.ExpandPaths.Single().Should().Be("NavProp1($expand=NavProp3($select=SubTestProperty))");
 }
 public void ExpansionThroughMultipleNavPropsIsExpressedAsExpandOptions()
 {
     SelectExpandPathBuilder pathBuilder = new SelectExpandPathBuilder();
     ParameterExpression pe = Expression.Parameter(typeof(TestEntity));
     PropertyInfo navPropInfo = typeof(TestEntity).GetProperties().Single(x => x.Name == "NavProp1");
     PropertyInfo subNavPropInfo = typeof(SubTestEntity1).GetProperties().Single(x => x.Name == "NavProp3");
     pathBuilder.PushParamExpression(pe);
     pathBuilder.StartNewPath();
     pathBuilder.AppendPropertyToPath(navPropInfo, null, dsc);
     pathBuilder.AppendPropertyToPath(subNavPropInfo, null, dsc);
     pathBuilder.ExpandPaths.Single().Should().Be("NavProp1($expand=NavProp3)");
 }