Beispiel #1
0
        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"]);
        }