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"); HttpRequestContext requestContext = new HttpRequestContext(); HttpControllerContext controllerContext = new HttpControllerContext { Request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/"), RequestContext = requestContext, RouteData = new HttpRouteData(new HttpRoute()) }; controllerContext.Request.SetRequestContext(requestContext); ILookup <string, HttpActionDescriptor> actionMap = new HttpActionDescriptor[1].ToLookup(desc => "IsUpgraded"); // Act string function = functionConvention.SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Equal("IsUpgraded", function); Assert.Equal(1, controllerContext.Request.GetRouteData().Values.Count); Assert.Equal(1, controllerContext.Request.GetRouteData().Values["key"]); }
public void SelectAction_ThrowsArgumentNull_IfODataPathIsNull() { // Arrange FunctionRoutingConvention functionConvention = new FunctionRoutingConvention(); // Act & Assert Assert.ThrowsArgumentNull( () => functionConvention.SelectAction(odataPath: null, controllerContext: null, actionMap: null), "odataPath"); }
public void SelectAction_ThrowsArgumentNull_IfActionMapIsNull() { // Arrange FunctionRoutingConvention functionConvention = new FunctionRoutingConvention(); ODataPath odataPath = new ODataPath(); HttpControllerContext controllerContext = new HttpControllerContext(); // Act & Assert Assert.ThrowsArgumentNull( () => functionConvention.SelectAction(odataPath, controllerContext, actionMap: null), "actionMap"); }
public void SelectAction_ReturnsNull_RequestMethodIsNotGet(string requestMethod) { // Arrange FunctionRoutingConvention functionConvention = new FunctionRoutingConvention(); ODataPath odataPath = new ODataPath(); HttpControllerContext controllerContext = new HttpControllerContext(); controllerContext.Request = new HttpRequestMessage(new HttpMethod(requestMethod), "http://localhost/"); ILookup<string, HttpActionDescriptor> actionMap = new HttpActionDescriptor[0].ToLookup(desc => (string)null); // Act string selectedAction = functionConvention.SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Null(selectedAction); }
public void SelectAction_ReturnsNull_RequestMethodIsNotGet(string requestMethod) { // Arrange FunctionRoutingConvention functionConvention = new FunctionRoutingConvention(); ODataPath odataPath = new ODataPath(); HttpControllerContext controllerContext = new HttpControllerContext(); controllerContext.Request = new HttpRequestMessage(new HttpMethod(requestMethod), "http://localhost/"); ILookup <string, HttpActionDescriptor> actionMap = new HttpActionDescriptor[0].ToLookup(desc => (string)null); // Act string selectedAction = functionConvention.SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Null(selectedAction); }
public void SelectAction_ReturnsFunctionName_ForFunctionOnEntity() { // Arrange FunctionRoutingConvention functionConvention = new FunctionRoutingConvention(); CustomersModelWithInheritance model = new CustomersModelWithInheritance(); ODataPath odataPath = new DefaultODataPathHandler().Parse(model.Model, "Customers(1)/NS.IsUpgraded"); HttpRequestContext requestContext = new HttpRequestContext(); HttpControllerContext controllerContext = new HttpControllerContext { Request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/"), RequestContext = requestContext, RouteData = new HttpRouteData(new HttpRoute()) }; controllerContext.Request.SetRequestContext(requestContext); ILookup<string, HttpActionDescriptor> actionMap = new HttpActionDescriptor[1].ToLookup(desc => "IsUpgraded"); // Act string function = functionConvention.SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Equal("IsUpgraded", function); Assert.Equal(1, controllerContext.Request.GetRouteData().Values.Count); Assert.Equal("1", controllerContext.Request.GetRouteData().Values["key"]); }
public void SelectAction_UpdatesRouteData_ForSingletonFunctionWithParameters() { // Arrange FunctionRoutingConvention functionConvention = new FunctionRoutingConvention(); CustomersModelWithInheritance model = new CustomersModelWithInheritance(); ODataPath odataPath = new DefaultODataPathHandler().Parse(model.Model, "VipCustomer/NS.IsUpgradedWithParam(city='any')"); HttpRequestContext requestContext = new HttpRequestContext(); HttpControllerContext controllerContext = new HttpControllerContext { Request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/"), RequestContext = requestContext, RouteData = new HttpRouteData(new HttpRoute()) }; controllerContext.Request.SetRequestContext(requestContext); ILookup<string, HttpActionDescriptor> actionMap = new HttpActionDescriptor[1].ToLookup(desc => "IsUpgradedWithParam"); // Act string function = functionConvention.SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Equal("IsUpgradedWithParam", function); Assert.Equal(1, controllerContext.Request.GetRouteData().Values.Count); Assert.Equal("any", controllerContext.Request.GetRouteData().Values["city"]); }