public void SelectAction_Returns_ExpectedMethodOnDerivedType(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 NavigationPropertyLinkSegment(specialOrdersProperty, model.Orders)); var request = RequestFactory.Create(new HttpMethod(method), "http://localhost/"); var actionMap = SelectActionHelper.CreateActionMap(methodsInController); // Act string selectedAction = SelectActionHelper.SelectAction(new RefRoutingConvention(), odataPath, request, actionMap); // Assert Assert.Equal(expectedSelectedAction, selectedAction); if (expectedSelectedAction == null) { Assert.Empty(SelectActionHelper.GetRouteData(request).Values); } else { Assert.Equal(3, SelectActionHelper.GetRouteData(request).Values.Count); Assert.Equal(42, SelectActionHelper.GetRouteData(request).Values["key"]); Assert.Equal(42, SelectActionHelper.GetRouteData(request).Values["keyID"]); Assert.Equal(specialOrdersProperty.Name, SelectActionHelper.GetRouteData(request).Values["navigationProperty"]); Assert.Equal(2, SelectActionHelper.GetRoutingConventionsStore(request)[ODataRouteConstants.KeyCount]); } }
public void SelectAction_OnEntitySetPath_OpenEntityType_ReturnsTheActionName(string url) { // Arrange CustomersModelWithInheritance model = new CustomersModelWithInheritance(); ODataPath odataPath = new DefaultODataPathHandler().Parse(model.Model, "http://localhost/", url); var request = RequestFactory.Create(HttpMethod.Get, "http://localhost/"); var actionMap = SelectActionHelper.CreateActionMap("GetDynamicProperty"); // Act string selectedAction = SelectActionHelper.SelectAction(_routingConvention, odataPath, request, actionMap); // Assert Assert.NotNull(selectedAction); Assert.Equal("GetDynamicProperty", selectedAction); var routeData = SelectActionHelper.GetRouteData(request); var routingConventionsStore = SelectActionHelper.GetRoutingConventionsStore(request); Assert.Equal(4, routeData.Values.Count); Assert.Equal(7, routeData.Values["key"]); Assert.Equal(7, routeData.Values["keyID"]); Assert.Equal(1, routingConventionsStore[ODataRouteConstants.KeyCount]); Assert.Equal("DynamicPropertyA", routeData.Values["dynamicProperty"]); Assert.Equal("DynamicPropertyA", (routeData.Values[ODataParameterValue.ParameterValuePrefix + "dynamicProperty"] as ODataParameterValue).Value); }
public void SelectAction_UpdatesRouteData_ForSingletonFunctionWithParameters() { // Arrange FunctionRoutingConvention functionConvention = new FunctionRoutingConvention(); CustomersModelWithInheritance model = new CustomersModelWithInheritance(); ODataPath odataPath = new DefaultODataPathHandler().Parse(model.Model, _serviceRoot, "VipCustomer/NS.IsUpgradedWithParam(city='any')"); var request = RequestFactory.Create(HttpMethod.Get, "http://localhost/"); var actionMap = SelectActionHelper.CreateActionMap("IsUpgradedWithParam"); // Act string selectedAction = SelectActionHelper.SelectAction(functionConvention, odataPath, request, actionMap); // Assert Assert.Equal("IsUpgradedWithParam", selectedAction); Assert.Single(SelectActionHelper.GetRouteData(request).Values); Assert.Equal("any", SelectActionHelper.GetRouteData(request).Values["city"]); Assert.Equal(1, SelectActionHelper.GetRoutingConventionsStore(request)[ODataRouteConstants.KeyCount]); }
public void SelectAction_ReturnsFunctionName_ForEntityFunctionOnEntity() { // Arrange FunctionRoutingConvention functionConvention = new FunctionRoutingConvention(); CustomersModelWithInheritance model = new CustomersModelWithInheritance(); ODataPath odataPath = new DefaultODataPathHandler().Parse(model.Model, _serviceRoot, "Customers(1)/NS.IsUpgraded"); var request = RequestFactory.Create(HttpMethod.Get, "http://localhost/"); var actionMap = SelectActionHelper.CreateActionMap("IsUpgraded"); // Act string selectedAction = SelectActionHelper.SelectAction(functionConvention, odataPath, request, actionMap); // Assert Assert.Equal("IsUpgraded", selectedAction); Assert.Equal(2, SelectActionHelper.GetRouteData(request).Values.Count); Assert.Equal(1, SelectActionHelper.GetRouteData(request).Values["key"]); Assert.Equal(1, SelectActionHelper.GetRouteData(request).Values["keyID"]); Assert.Equal(1, SelectActionHelper.GetRoutingConventionsStore(request)[ODataRouteConstants.KeyCount]); }
public void SelectAction_OnEnumCollection_ReturnsTheActionName(string httpMethod, string prefix) { // Arrange IEdmModel model = ODataCountTest.GetEdmModel(); ODataPath odataPath = new DefaultODataPathHandler().Parse(model, _serviceRoot, "DollarCountEntities(7)/EnumCollectionProp"); var request = RequestFactory.Create(new HttpMethod(httpMethod), "http://localhost/"); var actionMap = SelectActionHelper.CreateActionMap(prefix + "EnumCollectionProp"); // Act string selectedAction = SelectActionHelper.SelectAction(new PropertyRoutingConvention(), odataPath, request, actionMap); // Assert Assert.NotNull(selectedAction); Assert.Equal(prefix + "EnumCollectionProp", selectedAction); Assert.Equal(2, SelectActionHelper.GetRouteData(request).Values.Count); Assert.Equal(7, SelectActionHelper.GetRouteData(request).Values["key"]); Assert.Equal(7, SelectActionHelper.GetRouteData(request).Values["keyID"]); Assert.Equal(1, SelectActionHelper.GetRoutingConventionsStore(request)[ODataRouteConstants.KeyCount]); }
public void SelectAction_OnComplexCollection_ReturnsTheActionName(string httpMethod, string prefix) { // Arrange CustomersModelWithInheritance model = new CustomersModelWithInheritance(); ODataPath odataPath = new DefaultODataPathHandler().Parse(model.Model, _serviceRoot, "Customers(7)/OtherAccounts"); var request = RequestFactory.Create(new HttpMethod(httpMethod), "http://localhost/"); var actionMap = SelectActionHelper.CreateActionMap(prefix + "OtherAccountsFromCustomer"); // Act string selectedAction = SelectActionHelper.SelectAction(new PropertyRoutingConvention(), odataPath, request, actionMap); // Assert Assert.NotNull(selectedAction); Assert.Equal(prefix + "OtherAccountsFromCustomer", selectedAction); Assert.Equal(2, SelectActionHelper.GetRouteData(request).Values.Count); Assert.Equal(7, SelectActionHelper.GetRouteData(request).Values["key"]); Assert.Equal(7, SelectActionHelper.GetRouteData(request).Values["keyID"]); Assert.Equal(1, SelectActionHelper.GetRoutingConventionsStore(request)[ODataRouteConstants.KeyCount]); }
public void SelectAction_ReturnsFunctionName_DollarCount() { // Arrange var model = new CustomersModelWithInheritance(); var handler = new DefaultODataPathHandler(); ODataPath odataPath = handler.Parse(model.Model, _serviceRoot, "Customers(1)/NS.GetOrders(parameter=5)/$count"); var request = RequestFactory.Create(HttpMethod.Get, "http://localhost/"); var actionMap = SelectActionHelper.CreateActionMap("GetOrders"); // Act string selectedAction = SelectActionHelper.SelectAction(new FunctionRoutingConvention(), odataPath, request, actionMap); // Assert Assert.Equal("GetOrders", selectedAction); Assert.Equal(3, SelectActionHelper.GetRouteData(request).Values.Count); Assert.Equal(1, SelectActionHelper.GetRouteData(request).Values["key"]); Assert.Equal(1, SelectActionHelper.GetRouteData(request).Values["keyID"]); Assert.Equal(5, SelectActionHelper.GetRouteData(request).Values["parameter"]); Assert.Equal(2, SelectActionHelper.GetRoutingConventionsStore(request)[ODataRouteConstants.KeyCount]); }
public void SelectAction_Returns_DollarCount(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), CountSegment.Instance); var request = RequestFactory.Create(new HttpMethod(method), "http://localhost/"); var actionMap = SelectActionHelper.CreateActionMap(methodsInController); // Act string selectedAction = SelectActionHelper.SelectAction(new NavigationRoutingConvention(), odataPath, request, actionMap); // Assert Assert.Equal(expectedSelectedAction, selectedAction); Assert.Equal(2, SelectActionHelper.GetRouteData(request).Values.Count); Assert.Equal(42, SelectActionHelper.GetRouteData(request).Values["key"]); Assert.Equal(42, SelectActionHelper.GetRouteData(request).Values["keyID"]); Assert.Equal(1, SelectActionHelper.GetRoutingConventionsStore(request)[ODataRouteConstants.KeyCount]); }