public void SelectAction_Returns_DerivedTypeWithDollarCount(string method, string[] methodsInController, string expectedSelectedAction) { // Arrange var keys = new[] { new KeyValuePair <string, object>("ID", 42) }; CustomersModelWithInheritance model = new CustomersModelWithInheritance(); var specialOrdersProperty = model.SpecialCustomer.FindProperty("SpecialOrders") as IEdmNavigationProperty; ODataPath odataPath = new ODataPath(new EntitySetSegment(model.Customers), new KeySegment(keys, model.Customer, model.Customers), new TypeSegment(model.SpecialCustomer, model.Customers), new NavigationPropertySegment(specialOrdersProperty, model.Orders), CountSegment.Instance); HttpControllerContext controllerContext = CreateControllerContext(method); var actionMap = GetMockActionMap(methodsInController); // Act string selectedAction = new NavigationRoutingConvention().SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Equal(expectedSelectedAction, selectedAction); Assert.Equal(1, controllerContext.RouteData.Values.Count); Assert.Equal(42, controllerContext.RouteData.Values["key"]); }
public void SelectAction_OnEntitySetPath_Returns_ExpectedMethodOnBaseType(string method, string[] methodsInController, string expectedSelectedAction) { // Arrange var keys = new[] { new KeyValuePair <string, object>("ID", 42) }; CustomersModelWithInheritance model = new CustomersModelWithInheritance(); var ordersProperty = model.Customer.FindProperty("Orders") as IEdmNavigationProperty; ODataPath odataPath = new ODataPath(new EntitySetSegment(model.Customers), new KeySegment(keys, model.Customer, model.Customers), new NavigationPropertySegment(ordersProperty, model.Orders)); HttpControllerContext controllerContext = CreateControllerContext(method); var actionMap = GetMockActionMap(methodsInController); // Act string selectedAction = new NavigationRoutingConvention().SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Equal(expectedSelectedAction, selectedAction); if (expectedSelectedAction == null) { Assert.Empty(controllerContext.RouteData.Values); } else { Assert.Equal(1, controllerContext.RouteData.Values.Count); Assert.Equal(42, controllerContext.RouteData.Values["key"]); } }
public void SelectAction_OnEntitySetPath_Returns_ExpectedMethodOnBaseType(string method, string[] methodsInController, string expectedSelectedAction) { // Arrange const string key = "42"; CustomersModelWithInheritance model = new CustomersModelWithInheritance(); var ordersProperty = model.Customer.FindProperty("Orders") as IEdmNavigationProperty; ODataPath odataPath = new ODataPath(new EntitySetPathSegment(model.Customers), new KeyValuePathSegment(key), new NavigationPathSegment(ordersProperty)); HttpControllerContext controllerContext = CreateControllerContext(method); var actionMap = GetMockActionMap(methodsInController); // Act string selectedAction = new NavigationRoutingConvention().SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Equal(expectedSelectedAction, selectedAction); if (expectedSelectedAction == null) { Assert.Empty(controllerContext.RouteData.Values); } else { Assert.Equal(1, controllerContext.RouteData.Values.Count); Assert.Equal(key, controllerContext.RouteData.Values["key"]); } }
public void SelectAction_OnEntitySetPath_Returns_ExpectedMethodOnBaseType(string method, string[] methodsInController, string expectedSelectedAction) { // Arrange const int key = 42; CustomersModelWithInheritance model = new CustomersModelWithInheritance(); var ordersProperty = model.Customer.FindProperty("Orders") as IEdmNavigationProperty; ODataPath odataPath = new ODataPath(new EntitySetPathSegment(model.Customers), new KeyValuePathSegment(key.ToString()), new NavigationPathSegment(ordersProperty)); HttpControllerContext controllerContext = CreateControllerContext(method); controllerContext.Request.ODataProperties().Model = model.Model; var actionMap = GetMockActionMap(methodsInController); // Act string selectedAction = new NavigationRoutingConvention().SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Equal(expectedSelectedAction, selectedAction); if (expectedSelectedAction == null) { Assert.Empty(controllerContext.RouteData.Values); } else { Assert.Equal(1, controllerContext.RouteData.Values.Count); Assert.Equal(key, controllerContext.RouteData.Values["key"]); } }
public void SelectAction_ReturnsNull_IfActionIsMissing() { ODataPath odataPath = new DefaultODataPathHandler().Parse(ODataRoutingModel.GetModel(), "RoutingCustomers(10)/Name"); ILookup<string, HttpActionDescriptor> emptyActionMap = new HttpActionDescriptor[0].ToLookup(desc => (string)null); HttpControllerContext controllerContext = new HttpControllerContext(); controllerContext.Request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/"); controllerContext.Request.SetRouteData(new HttpRouteData(new HttpRoute())); string selectedAction = new NavigationRoutingConvention().SelectAction(odataPath, controllerContext, emptyActionMap); Assert.Null(selectedAction); Assert.Empty(controllerContext.Request.GetRouteData().Values); }
public void SelectAction_OnSingletonPath_Returns_ExpectedMethodOnBaseType(string method, string[] methodsInController, string expectedSelectedAction) { // Arrange CustomersModelWithInheritance model = new CustomersModelWithInheritance(); var ordersProperty = model.Customer.FindProperty("Orders") as IEdmNavigationProperty; ODataPath odataPath = new ODataPath(new SingletonPathSegment(model.VipCustomer), new NavigationPathSegment(ordersProperty)); HttpControllerContext controllerContext = CreateControllerContext(method); var actionMap = GetMockActionMap(methodsInController); // Act string selectedAction = new NavigationRoutingConvention().SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Equal(expectedSelectedAction, selectedAction); Assert.Empty(controllerContext.RouteData.Values); }
public void SelectAction_ReturnsNull_IfToCollectionValuedNavigationProperty(string method) { // Arrange CustomersModelWithInheritance model = new CustomersModelWithInheritance(); var ordersProperty = model.Customer.FindProperty("Orders") as IEdmNavigationProperty; ODataPath odataPath = new ODataPath(new EntitySetPathSegment(model.Customers), new KeyValuePathSegment("1"), new NavigationPathSegment(ordersProperty)); HttpControllerContext controllerContext = CreateControllerContext(method); var actionMap = GetMockActionMap(); // Act string selectedAction = new NavigationRoutingConvention().SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Null(selectedAction); }
public void SelectAction_ReturnsNull_NotSupportedMethodForDollarCount(string method, string[] methodsInController) { // Arrange const string key = "42"; CustomersModelWithInheritance model = new CustomersModelWithInheritance(); var specialOrdersProperty = model.SpecialCustomer.FindProperty("SpecialOrders") as IEdmNavigationProperty; ODataPath odataPath = new ODataPath(new EntitySetPathSegment(model.Customers), new KeyValuePathSegment(key), new CastPathSegment(model.SpecialCustomer), new NavigationPathSegment(specialOrdersProperty), new CountPathSegment()); HttpControllerContext controllerContext = CreateControllerContext(method); var actionMap = GetMockActionMap(methodsInController); // Act string selectedAction = new NavigationRoutingConvention().SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Null(selectedAction); }
public void SelectAction_Returns_ExpectedMethod_OnNonCollectionValuedNavigationProperty(string method, string[] methodsInController, string expectedSelectedAction) { // Arrange CustomersModelWithInheritance model = new CustomersModelWithInheritance(); var customerProperty = model.Order.FindProperty("Customer") as IEdmNavigationProperty; ODataPath odataPath = new ODataPath(new EntitySetPathSegment(model.Orders), new KeyValuePathSegment("1"), new NavigationPathSegment(customerProperty)); HttpControllerContext controllerContext = CreateControllerContext(method); var actionMap = GetMockActionMap(methodsInController); // Act string selectedAction = new NavigationRoutingConvention().SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Equal(expectedSelectedAction, selectedAction); Assert.Equal("1", controllerContext.RouteData.Values["key"]); }
public void SelectAction_Returns_DollarCount(string method, string[] methodsInController, string expectedSelectedAction) { // Arrange const string key = "42"; CustomersModelWithInheritance model = new CustomersModelWithInheritance(); var ordersProperty = model.Customer.FindProperty("Orders") as IEdmNavigationProperty; ODataPath odataPath = new ODataPath(new EntitySetPathSegment(model.Customers), new KeyValuePathSegment(key), new NavigationPathSegment(ordersProperty), new CountPathSegment()); HttpControllerContext controllerContext = CreateControllerContext(method); var actionMap = GetMockActionMap(methodsInController); // Act string selectedAction = new NavigationRoutingConvention().SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Equal(expectedSelectedAction, selectedAction); Assert.Equal(1, controllerContext.RouteData.Values.Count); Assert.Equal(key, controllerContext.RouteData.Values["key"]); }
public void SelectAction_ReturnsNull_IfPostToNavigationPropertyBindingToNonCollectionValuedNavigationProperty(string path) { // Arrange ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet <Company>("Companies"); builder.Singleton <Company>("MyCompany"); builder.EntitySet <Employee>("Employees"); builder.Singleton <Employee>("Tony"); IEdmModel model = builder.GetEdmModel(); ODataPath odataPath = new DefaultODataPathHandler().Parse(model, "http://any/", path); HttpControllerContext controllerContext = CreateControllerContext("Post"); var actionMap = GetMockActionMap(); // Act string selectedAction = new NavigationRoutingConvention().SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Null(selectedAction); }
public void SelectAction_Returns_DerivedTypeWithDollarCount(string method, string[] methodsInController, string expectedSelectedAction) { // Arrange const string key = "42"; CustomersModelWithInheritance model = new CustomersModelWithInheritance(); var specialOrdersProperty = model.SpecialCustomer.FindProperty("SpecialOrders") as IEdmNavigationProperty; ODataPath odataPath = new ODataPath(new EntitySetPathSegment(model.Customers), new KeyValuePathSegment(key), new CastPathSegment(model.SpecialCustomer), new NavigationPathSegment(specialOrdersProperty), new CountPathSegment()); HttpControllerContext controllerContext = CreateControllerContext(method); var actionMap = GetMockActionMap(methodsInController); // Act string selectedAction = new NavigationRoutingConvention().SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Equal(expectedSelectedAction, selectedAction); Assert.Equal(1, controllerContext.RouteData.Values.Count); Assert.Equal(key, controllerContext.RouteData.Values["key"]); }
public void SelectAction_ReturnsNull_IfPostToNavigationPropertyBindingToNonCollectionValuedNavigationProperty(string path) { // Arrange ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet<Company>("Companies"); builder.Singleton<Company>("MyCompany"); builder.EntitySet<Employee>("Employees"); builder.Singleton<Employee>("Tony"); IEdmModel model = builder.GetEdmModel(); ODataPath odataPath = new DefaultODataPathHandler().Parse(model, "http://any/", path); HttpControllerContext controllerContext = CreateControllerContext("Post"); var actionMap = GetMockActionMap(); // Act string selectedAction = new NavigationRoutingConvention().SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Null(selectedAction); }