public void CreateResourceSet_Ignores_CountValue_ForInnerResourceSets() { // Arrange ODataResourceSetSerializer serializer = new ODataResourceSetSerializer(_serializerProvider); var request = RequestFactory.Create(); request.ODataContext().TotalCount = 42; var result = new object[0]; IEdmNavigationProperty navProp = _customerSet.EntityType().NavigationProperties().First(); SelectExpandClause selectExpandClause = new SelectExpandClause(new SelectItem[0], allSelected: true); ResourceContext entity = new ResourceContext { SerializerContext = new ODataSerializerContext { Request = request, NavigationSource = _customerSet, Model = _model } }; ODataSerializerContext nestedContext = new ODataSerializerContext(entity, selectExpandClause, navProp); // Act ODataResourceSet resourceSet = serializer.CreateResourceSet(result, _customersType, nestedContext); // Assert Assert.Null(resourceSet.Count); }
public void CreateResourceSet_SetsODataOperations() { // Arrange var config = RoutingConfigurationFactory.CreateWithRootContainer("OData"); var request = RequestFactory.Create(config, "OData"); CustomersModelWithInheritance model = new CustomersModelWithInheritance(); IEdmCollectionTypeReference customersType = new EdmCollectionTypeReference(new EdmCollectionType(model.Customer.AsReference())); ODataResourceSetSerializer serializer = new ODataResourceSetSerializer(_serializerProvider); ODataSerializerContext context = new ODataSerializerContext { NavigationSource = model.Customers, Request = request, Model = model.Model, MetadataLevel = ODataMetadataLevel.FullMetadata, Url = CreateMetadataLinkFactory("http://IgnoreMetadataPath", request) }; var result = new object[0]; // Act ODataResourceSet resourceSet = serializer.CreateResourceSet(result, customersType, context); // Assert Assert.Single(resourceSet.Actions); Assert.Equal(3, resourceSet.Functions.Count()); }
public void CreateResourceSet_SetsNextPageLink_WhenWritingTruncatedCollection_ForExpandedProperties() { // Arrange CustomersModelWithInheritance model = new CustomersModelWithInheritance(); IEdmCollectionTypeReference customersType = new EdmCollectionTypeReference(new EdmCollectionType(model.Customer.AsReference())); ODataResourceSetSerializer serializer = new ODataResourceSetSerializer(_serializerProvider); SelectExpandClause selectExpandClause = new SelectExpandClause(new SelectItem[0], allSelected: true); IEdmNavigationProperty ordersProperty = model.Customer.NavigationProperties().First(); ResourceContext entity = new ResourceContext { SerializerContext = new ODataSerializerContext { NavigationSource = model.Customers, Model = model.Model } }; ODataSerializerContext nestedContext = new ODataSerializerContext(entity, selectExpandClause, ordersProperty); TruncatedCollection <Order> orders = new TruncatedCollection <Order>(new[] { new Order(), new Order() }, pageSize: 1); NavigationSourceLinkBuilderAnnotation linkBuilder = new NavigationSourceLinkBuilderAnnotation(); linkBuilder.AddNavigationPropertyLinkBuilder(ordersProperty, new NavigationLinkBuilder((entityContext, navigationProperty) => new Uri("http://navigation-link/"), false)); model.Model.SetNavigationSourceLinkBuilder(model.Customers, linkBuilder); model.Model.SetNavigationSourceLinkBuilder(model.Orders, new NavigationSourceLinkBuilderAnnotation()); // Act ODataResourceSet resourceSet = serializer.CreateResourceSet(orders, _customersType, nestedContext); // Assert Assert.Equal("http://navigation-link/?$skip=1", resourceSet.NextPageLink.AbsoluteUri); }
public void CreateResourceSet_SetsODataOperations() { // Arrange IEdmModel model = GetEdmModelWithOperations(out IEdmEntityType customerType, out IEdmEntitySet customers); IEdmCollectionTypeReference customersType = new EdmCollectionTypeReference(new EdmCollectionType(customerType.AsReference())); Mock <ODataSerializerProvider> serializerProvider = new Mock <ODataSerializerProvider>(); ODataResourceSetSerializer serializer = new ODataResourceSetSerializer(serializerProvider.Object); var request = RequestFactory.Create(method: "get", uri: "http://IgnoreMetadataPath", opt => opt.AddModel(model)); ODataSerializerContext context = new ODataSerializerContext { NavigationSource = customers, Request = request, Model = model, MetadataLevel = ODataMetadataLevel.Full, }; var result = new object[0]; // Act ODataResourceSet resourceSet = serializer.CreateResourceSet(result, customersType, context); // Assert Assert.Single(resourceSet.Actions); Assert.Equal(3, resourceSet.Functions.Count()); }
public void CreateResource_Ignores_NextPageLink_ForInnerResourceSets() { // Arrange Mock <ODataSerializerProvider> serializerProvider = new Mock <ODataSerializerProvider>(); ODataResourceSetSerializer serializer = new ODataResourceSetSerializer(serializerProvider.Object); Uri nextLink = new Uri("http://somelink"); var request = RequestFactory.Create(); request.ODataFeature().NextLink = nextLink; var result = new object[0]; IEdmNavigationProperty navProp = _customerSet.EntityType().NavigationProperties().First(); SelectExpandClause selectExpandClause = new SelectExpandClause(new SelectItem[0], allSelected: true); ResourceContext entity = new ResourceContext { SerializerContext = new ODataSerializerContext { Request = request, NavigationSource = _customerSet, Model = _model } }; ODataSerializerContext nestedContext = new ODataSerializerContext(entity, selectExpandClause, navProp); // Act ODataResourceSet resourceSet = serializer.CreateResourceSet(result, _customersType, nestedContext); // Assert Assert.Null(resourceSet.NextPageLink); }
public void CreateResource_Sets_NextPageLinkForPageResult() { // Arrange ODataResourceSetSerializer serializer = new ODataResourceSetSerializer(_serializerProvider); Uri expectedNextLink = new Uri("http://nextlink.com"); const long ExpectedCountValue = 1000; var result = new PageResult <Customer>(_customers, expectedNextLink, ExpectedCountValue); // Act ODataResourceSet resourceSet = serializer.CreateResourceSet(result, _customersType, new ODataSerializerContext()); // Assert Assert.Equal(expectedNextLink, resourceSet.NextPageLink); }
public void SetODataFeatureTotalCountValueNull() { // Arrange ODataResourceSetSerializer serializer = new ODataResourceSetSerializer(_serializerProvider); var request = RequestFactory.Create(); request.ODataContext().TotalCount = null; var result = new object[0]; // Act ODataResourceSet resourceSet = serializer.CreateResourceSet(result, _customersType, new ODataSerializerContext { Request = request }); // Assert Assert.Null(resourceSet.Count); }
public void CreateODataFeed_Sets_DeltaLinkFromContext() { // Arrange ODataResourceSetSerializer serializer = new ODataResourceSetSerializer(_serializerProvider); Uri expectedDeltaLink = new Uri("http://deltalink.com"); var request = RequestFactory.Create(); request.ODataContext().DeltaLink = expectedDeltaLink; var result = new object[0]; // Act ODataResourceSet feed = serializer.CreateResourceSet(result, _customersType, new ODataSerializerContext { Request = request }); // Assert Assert.Equal(expectedDeltaLink, feed.DeltaLink); }
public void CreateResourceSet_Sets_NextPageLinkFromContext() { // Arrange ODataResourceSetSerializer serializer = new ODataResourceSetSerializer(_serializerProvider); Uri expectedNextLink = new Uri("http://nextlink.com"); var request = RequestFactory.Create(); request.ODataContext().NextLink = expectedNextLink; var result = new object[0]; // Act ODataResourceSet resourceSet = serializer.CreateResourceSet(result, _customersType, new ODataSerializerContext { Request = request }); // Assert Assert.Equal(expectedNextLink, resourceSet.NextPageLink); }
public void CreateResourceSet_Sets_CountValueFromContext() { // Arrange ODataResourceSetSerializer serializer = new ODataResourceSetSerializer(_serializerProvider); const long ExpectedCountValue = 1000; var request = RequestFactory.Create(); request.ODataContext().TotalCount = ExpectedCountValue; var result = new object[0]; // Act ODataResourceSet resourceSet = serializer.CreateResourceSet(result, _customersType, new ODataSerializerContext { Request = request }); // Assert Assert.Equal(ExpectedCountValue, resourceSet.Count); }