public void ProjectAsWrapper_NonCollection_ProjectedValueNullAndHandleNullPropagationFalse_Throws() { // Arrange _settings.HandleNullPropagation = HandleNullPropagationOption.False; ExpandItem expandItem = new ExpandItem(new ODataPath(new NavigationPropertySegment(_model.Order.NavigationProperties().Single())), _model.Customers); Expansion expansion = new Expansion(new[] { expandItem }); SelectExpandClause selectExpand = new SelectExpandClause(selection: null, expansion: expansion); Expression source = Expression.Constant(null, typeof(Order)); // Act Expression projection = _binder.ProjectAsWrapper(source, selectExpand, _model.Order); // Assert var e = Assert.Throws<TargetInvocationException>( () => Expression.Lambda(projection).Compile().DynamicInvoke()); Assert.IsType<NullReferenceException>(e.InnerException); }
public void ProjectAsWrapper_ProjectionContainsExpandedProperties() { // Arrange Order order = new Order(); ExpandItem expandItem = new ExpandItem(new ODataPath(new NavigationPropertySegment(_model.Order.NavigationProperties().Single())), _model.Customers); Expansion expansion = new Expansion(new[] { expandItem }); SelectExpandClause selectExpand = new SelectExpandClause(selection: null, expansion: expansion); Expression source = Expression.Constant(order); // Act Expression projection = _binder.ProjectAsWrapper(source, selectExpand, _model.Order); // Assert SelectExpandWrapper<Order> projectedOrder = Expression.Lambda(projection).Compile().DynamicInvoke() as SelectExpandWrapper<Order>; Assert.NotNull(projectedOrder); Assert.Contains("Customer", projectedOrder.Container.ToDictionary().Keys); }
public void ProjectAsWrapper_NonCollection_ProjectedValueNullAndHandleNullPropagationTrue() { // Arrange _settings.HandleNullPropagation = HandleNullPropagationOption.True; ExpandItem expandItem = new ExpandItem(new ODataPath(new NavigationPropertySegment(_model.Order.NavigationProperties().Single())), _model.Customers); Expansion expansion = new Expansion(new[] { expandItem }); SelectExpandClause selectExpand = new SelectExpandClause(selection: null, expansion: expansion); Expression source = Expression.Constant(null, typeof(Order)); // Act Expression projection = _binder.ProjectAsWrapper(source, selectExpand, _model.Order); // Assert SelectExpandWrapper<Order> projectedOrder = Expression.Lambda(projection).Compile().DynamicInvoke() as SelectExpandWrapper<Order>; Assert.NotNull(projectedOrder); Assert.Null(projectedOrder.Instance); Assert.Null(projectedOrder.Container.ToDictionary()["Customer"]); }