Пример #1
0
        public void TryTranslateNavigationLinkSegmentTemplate_ReturnsODataNavigationSegment()
        {
            // Arrange
            EdmModel model = new EdmModel();

            model.AddElement(_employee);

            NavigationLinkSegmentTemplate linkSegment          = new NavigationLinkSegmentTemplate(_navigation, null);
            RouteValueDictionary          routeValueDictionary = new RouteValueDictionary(new { id = "42" });
            ODataTemplateTranslateContext context = new ODataTemplateTranslateContext
            {
                RouteValues = routeValueDictionary,
                Model       = model
            };

            // Without key segment
            // Act & Assert
            bool ok = linkSegment.TryTranslate(context);

            Assert.True(ok);
            ODataPathSegment actual = Assert.Single(context.Segments);
            NavigationPropertyLinkSegment navLinkSegment = Assert.IsType <NavigationPropertyLinkSegment>(actual);

            Assert.Same(_navigation, navLinkSegment.NavigationProperty);
            Assert.Null(navLinkSegment.NavigationSource);

            // With Key segment
            // Act & Assert
            context = new ODataTemplateTranslateContext
            {
                RouteValues = routeValueDictionary,
                Model       = model
            };

            linkSegment.Key = KeySegmentTemplate.CreateKeySegment(_employee, null, "id");
            ok = linkSegment.TryTranslate(context);

            Assert.True(ok);
            Assert.Collection(context.Segments,
                              e =>
            {
                NavigationPropertyLinkSegment navLinkSegment = Assert.IsType <NavigationPropertyLinkSegment>(e);
                Assert.Same(_navigation, navLinkSegment.NavigationProperty);
                Assert.Null(navLinkSegment.NavigationSource);
            },
                              e =>
            {
                KeySegment keySegment             = Assert.IsType <KeySegment>(e);
                KeyValuePair <string, object> key = Assert.Single(keySegment.Keys);
                Assert.Equal("Id", key.Key);
                Assert.Equal(42, key.Value);
            });
        }
        public void TryTranslateNavigationSegmentTemplate_ReturnsODataNavigationSegment()
        {
            // Arrange
            EdmEntityType          employee   = new EdmEntityType("NS", "Employee");
            IEdmNavigationProperty navigation = employee.AddUnidirectionalNavigation(new EdmNavigationPropertyInfo
            {
                Name               = "DirectReports",
                Target             = employee,
                TargetMultiplicity = EdmMultiplicity.Many
            });

            NavigationLinkSegmentTemplate linkSegment = new NavigationLinkSegmentTemplate(navigation, null);
            ODataTemplateTranslateContext context     = new ODataTemplateTranslateContext();

            // Act
            bool ok = linkSegment.TryTranslate(context);

            // Assert
            Assert.True(ok);
            ODataPathSegment actual = Assert.Single(context.Segments);
            NavigationPropertyLinkSegment navLinkSegment = Assert.IsType <NavigationPropertyLinkSegment>(actual);

            Assert.Same(navigation, navLinkSegment.NavigationProperty);
            Assert.Null(navLinkSegment.NavigationSource);
        }
Пример #3
0
        public void TryTranslateNavigationLinkSegmentTemplate_ThrowsArgumentNull_Context()
        {
            // Arrange
            NavigationLinkSegmentTemplate linkSegment = new NavigationLinkSegmentTemplate(_navigation, null);

            // Act & Assert
            ExceptionAssert.ThrowsArgumentNull(() => linkSegment.TryTranslate(null), "context");
        }