public void TranslateFunctionImportSegmentTemplate_ReturnsNull_WithOptionalParameterMisMatch() { // Arrange _function.AddOptionalParameter("min", IntPrimitive); _function.AddOptionalParameter("max", IntPrimitive); EdmModel model = new EdmModel(); model.AddElement(_function); model.AddElement(_container); IDictionary <string, string> parameters = new Dictionary <string, string> { { "name", "{nameTemp}" }, { "title", "{titleTemp}" }, { "min", "{minTemp}" }, }; FunctionImportSegmentTemplate template = new FunctionImportSegmentTemplate(parameters, _functionImport, null); RouteValueDictionary routeValues = new RouteValueDictionary(new { name = "'pt'", title = "'abc'", min = "42,max=5" }); HttpContext httpContext = new DefaultHttpContext(); ODataTemplateTranslateContext context = new ODataTemplateTranslateContext(httpContext, routeValues, model); // Act ODataPathSegment actual = template.Translate(context); // Assert Assert.Null(actual); }
public void Translate_ReturnsODataFunctionImportSegment() { // Arrange var primitive = EdmCoreModel.Instance.GetPrimitive(EdmPrimitiveTypeKind.Int32, false); EdmFunction function = new EdmFunction("NS", "MyFunction", primitive, false, null, false); function.AddParameter("name", primitive); function.AddParameter("title", primitive); EdmEntityContainer container = new EdmEntityContainer("NS", "Default"); EdmFunctionImport functionImport = new EdmFunctionImport(container, "MyFunctionImport", function); FunctionImportSegmentTemplate template = new FunctionImportSegmentTemplate(functionImport, null); Mock <HttpContext> httpContext = new Mock <HttpContext>(); Mock <IEdmModel> edmModel = new Mock <IEdmModel>(); ODataTemplateTranslateContext context = new ODataTemplateTranslateContext(httpContext.Object, new RouteValueDictionary(), edmModel.Object); // Act ODataPathSegment actual = template.Translate(context); // Assert Assert.NotNull(actual); OperationImportSegment functionImportSegment = Assert.IsType <OperationImportSegment>(actual); Assert.Same(function, functionImportSegment.OperationImports.First().Operation); }
public void TranslateFunctionImportSegmentTemplate_ReturnsODataFunctionImportSegment_WithOptionalParameter() { // Arrange _function.AddOptionalParameter("min", IntPrimitive); _function.AddOptionalParameter("max", IntPrimitive); EdmModel model = new EdmModel(); model.AddElement(_function); model.AddElement(_container); IDictionary <string, string> parameters = new Dictionary <string, string> { { "name", "{nameTemp}" }, { "title", "{titleTemp}" }, { "min", "{minTemp}" }, }; FunctionImportSegmentTemplate template = new FunctionImportSegmentTemplate(parameters, _functionImport, null); RouteValueDictionary routeValues = new RouteValueDictionary(new { nameTemp = "'pt'", titleTemp = "'abc'", minTemp = "42" }); HttpContext httpContext = new DefaultHttpContext(); ODataTemplateTranslateContext context = new ODataTemplateTranslateContext(httpContext, routeValues, model); // Act ODataPathSegment actual = template.Translate(context); // Assert Assert.NotNull(actual); OperationImportSegment functionImportSegment = Assert.IsType <OperationImportSegment>(actual); Assert.Same(_function, functionImportSegment.OperationImports.First().Operation); Assert.Equal("pt", routeValues["nameTemp"]); Assert.Equal("abc", routeValues["titleTemp"]); Assert.Equal(42, routeValues["minTemp"]); }