コード例 #1
0
        public void TryTranslatePathTemplateSegmentTemplate_ReturnsDynamicPathSegment()
        {
            // Arrange
            RouteValueDictionary          routeValueDictionary = new RouteValueDictionary(new { dynamicproperty = "Dynamic" });
            ODataTemplateTranslateContext context = new ODataTemplateTranslateContext
            {
                RouteValues = routeValueDictionary
            };

            context.Segments.Add(new MySegment(_entityType));

            PathTemplateSegment         segment     = new PathTemplateSegment("{dynamicproperty}");
            PathTemplateSegmentTemplate pathSegment = new PathTemplateSegmentTemplate(segment);

            // Act
            Assert.True(pathSegment.TryTranslate(context));

            // Assert
            Assert.Equal(2, context.Segments.Count); // 1 - MySegment, 2 - Property Segment
            Assert.Collection(context.Segments,
                              e =>
            {
                Assert.IsType <MySegment>(e);
            },
                              e =>
            {
                DynamicPathSegment dynamicSegment = Assert.IsType <DynamicPathSegment>(e);
                Assert.Equal("Dynamic", dynamicSegment.Identifier);
            });
        }
コード例 #2
0
        public void TryTranslatePathTemplateSegmentTemplate_ReturnsNavigationPropertySegment()
        {
            // Arrange
            RouteValueDictionary          routeValueDictionary = new RouteValueDictionary(new { property = "RelatedCustomers" });
            ODataTemplateTranslateContext context = new ODataTemplateTranslateContext
            {
                RouteValues = routeValueDictionary
            };

            context.Segments.Add(new MySegment(_entityType));

            PathTemplateSegment         segment     = new PathTemplateSegment("{property}");
            PathTemplateSegmentTemplate pathSegment = new PathTemplateSegmentTemplate(segment);

            // Act
            Assert.True(pathSegment.TryTranslate(context));

            // Assert
            Assert.Equal(2, context.Segments.Count); // 1 - MySegment, 2 - Property Segment
            Assert.Collection(context.Segments,
                              e =>
            {
                Assert.IsType <MySegment>(e);
            },
                              e =>
            {
                NavigationPropertySegment propertySegment = Assert.IsType <NavigationPropertySegment>(e);
                Assert.Equal("RelatedCustomers", propertySegment.NavigationProperty.Name);
            });
        }
コード例 #3
0
        public void TryTranslatePathTemplateSegmentTemplate_ThrowsArgumentNull_Context()
        {
            // Arrange
            PathTemplateSegment         segment     = new PathTemplateSegment("{any}");
            PathTemplateSegmentTemplate pathSegment = new PathTemplateSegmentTemplate(segment);

            // Act & Assert
            ExceptionAssert.ThrowsArgumentNull(() => pathSegment.TryTranslate(null), "context");
        }
コード例 #4
0
        public void CtorPathTemplateSegmentTemplate_SetsProperties()
        {
            // Arrange & Act
            PathTemplateSegment         segment     = new PathTemplateSegment("{any}");
            PathTemplateSegmentTemplate pathSegment = new PathTemplateSegmentTemplate(segment);

            // Assert
            Assert.Equal("any", pathSegment.ParameterName);
            Assert.Same(segment, pathSegment.Segment);
        }
コード例 #5
0
        [InlineData("{dynamicproperty}")] // false because no previous segment in the context
        public void TryTranslatePathTemplateSegmentTemplate_ReturnsFalse_NotSupportedTemplate(string template)
        {
            // Arrange
            PathTemplateSegment           segment     = new PathTemplateSegment(template);
            PathTemplateSegmentTemplate   pathSegment = new PathTemplateSegmentTemplate(segment);
            ODataTemplateTranslateContext context     = new ODataTemplateTranslateContext();

            // Act & Assert
            Assert.False(pathSegment.TryTranslate(context));
        }
コード例 #6
0
        public void Ctor_SetPropertiesCorrectly()
        {
            // Arrange
            PathTemplateSegment segment = new PathTemplateSegment("{pName:dynamicproperty}");

            // Act
            PathTemplateSegmentTemplate template = new PathTemplateSegmentTemplate(segment);

            // Assert
            Assert.Equal("pName", template.PropertyName);
            Assert.Equal("dynamicproperty", template.SegmentName);
        }
コード例 #7
0
        public void GetTemplatesPathTemplateSegmentTemplate_ReturnsTemplates()
        {
            // Arrange
            PathTemplateSegment         segment     = new PathTemplateSegment("{any}");
            PathTemplateSegmentTemplate pathSegment = new PathTemplateSegmentTemplate(segment);

            // Act & Assert
            IEnumerable <string> templates = pathSegment.GetTemplates();
            string template = Assert.Single(templates);

            Assert.Equal("/{any}", template);
        }
コード例 #8
0
        public void TryMatch_DifferentType()
        {
            // Arrange
            PathTemplateSegment         pathTemplateSegment = new PathTemplateSegment("{pName:dynamicproperty}");
            PathTemplateSegmentTemplate template            = new PathTemplateSegmentTemplate(pathTemplateSegment);

            // Act
            Dictionary <string, object> values = new Dictionary <string, object>();
            bool result = template.TryMatch(MetadataSegment.Instance, values);

            // Assert
            Assert.False(result);
        }
コード例 #9
0
        public void TryTranslatePathTemplateSegmentTemplate_ReturnsFalse_PreviousSegmentNotStructuredType(string template)
        {
            // Arrange
            MySegment previousSegment = new MySegment(EdmCoreModel.Instance.GetString(false).Definition);

            PathTemplateSegment           segment     = new PathTemplateSegment(template);
            PathTemplateSegmentTemplate   pathSegment = new PathTemplateSegmentTemplate(segment);
            ODataTemplateTranslateContext context     = new ODataTemplateTranslateContext();

            context.Segments.Add(previousSegment);

            // Act & Assert
            Assert.False(pathSegment.TryTranslate(context));
        }
コード例 #10
0
        public void TryTranslatePathTemplateSegmentTemplate_ReturnsFalse_NoCorrectRouteData(string template)
        {
            // Arrange
            PathTemplateSegment           segment     = new PathTemplateSegment(template);
            PathTemplateSegmentTemplate   pathSegment = new PathTemplateSegmentTemplate(segment);
            ODataTemplateTranslateContext context     = new ODataTemplateTranslateContext
            {
                RouteValues = new RouteValueDictionary()
            };

            context.Segments.Add(new MySegment(_entityType));

            // Act & Assert
            Assert.False(pathSegment.TryTranslate(context));
        }
コード例 #11
0
        public void TryMatch_RetrunsTrue()
        {
            // Arrange
            PathTemplateSegment         pathTemplateSegment = new PathTemplateSegment("{pName:dynamicproperty}");
            PathTemplateSegmentTemplate template            = new PathTemplateSegmentTemplate(pathTemplateSegment);
            DynamicPathSegment          segment             = new DynamicPathSegment("property");

            // Act
            Dictionary <string, object> values = new Dictionary <string, object>();
            bool result = template.TryMatch(segment, values);

            // Assert
            Assert.True(result);
            Assert.True(values.ContainsKey("pName"));
            Assert.Equal("property", values["pName"]);
        }
コード例 #12
0
        public void TryTranslatePathTemplateSegmentTemplate_ReturnsFalse_DynamicPathSegmentWithKnowProperty()
        {
            // Arrange
            RouteValueDictionary          routeValueDictionary = new RouteValueDictionary(new { dynamicproperty = "Name" });
            ODataTemplateTranslateContext context = new ODataTemplateTranslateContext
            {
                RouteValues = routeValueDictionary
            };

            context.Segments.Add(new MySegment(_entityType));

            PathTemplateSegment         segment     = new PathTemplateSegment("{dynamicproperty}");
            PathTemplateSegmentTemplate pathSegment = new PathTemplateSegmentTemplate(segment);

            // Act & Assert
            Assert.False(pathSegment.TryTranslate(context));
        }