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); }
public void TryTranslateNavigationLinkSegmentTemplate_ThrowsArgumentNull_Context() { // Arrange NavigationLinkSegmentTemplate linkSegment = new NavigationLinkSegmentTemplate(_navigation, null); // Act & Assert ExceptionAssert.ThrowsArgumentNull(() => linkSegment.TryTranslate(null), "context"); }