/// <summary> /// Initializes a new instance of the <see cref="DefaultODataSerializerProvider"/> class. /// </summary> public DefaultODataSerializerProvider() { _feedSerializer = new ODataFeedSerializer(this); _collectionSerializer = new ODataCollectionSerializer(this); _complexTypeSerializer = new ODataComplexTypeSerializer(this); _entityTypeSerializer = new ODataEntityTypeSerializer(this); }
/// <summary> /// Initializes a new instance of the <see cref="DefaultODataSerializerProvider"/> class. /// </summary> public DefaultODataSerializerProvider() { _feedSerializer = new ODataFeedSerializer(this); _collectionSerializer = new ODataCollectionSerializer(this); _complexTypeSerializer = new ODataComplexTypeSerializer(this); _entityTypeSerializer = new ODataEntityTypeSerializer(this); }
public ODataEntityTypeSerializerTests() { _model = SerializationTestsHelpers.SimpleCustomerOrderModel(); _customerSet = _model.FindDeclaredEntityContainer("Default.Container").FindEntitySet("Customers"); _customer = new Customer() { FirstName = "Foo", LastName = "Bar", ID = 10, }; ODataSerializerProvider serializerProvider = new DefaultODataSerializerProvider(_model); _serializer = new ODataEntityTypeSerializer(new EdmEntityTypeReference(_customerSet.ElementType, isNullable: false), serializerProvider); _urlHelper = new Mock<UrlHelper>(new HttpRequestMessage()).Object; _writeContext = new ODataSerializerWriteContext(new ODataResponseContext()) { EntitySet = _customerSet, UrlHelper = _urlHelper }; }
public ODataEntityTypeSerializerTests() { _model = SerializationTestsHelpers.SimpleCustomerOrderModel(); _customerSet = _model.FindDeclaredEntityContainer("Default.Container").FindEntitySet("Customers"); _customer = new Customer() { FirstName = "Foo", LastName = "Bar", ID = 10, }; ODataSerializerProvider serializerProvider = new DefaultODataSerializerProvider(_model); _serializer = new ODataEntityTypeSerializer(new EdmEntityTypeReference(_customerSet.ElementType, isNullable: false), serializerProvider); _urlHelper = new Mock <UrlHelper>(new HttpRequestMessage()).Object; _writeContext = new ODataSerializerContext() { EntitySet = _customerSet, UrlHelper = _urlHelper }; }
public ODataEntityTypeSerializerTests() { _model = SerializationTestsHelpers.SimpleCustomerOrderModel(); _model.SetAnnotationValue<ClrTypeAnnotation>(_model.FindType("Default.Customer"), new ClrTypeAnnotation(typeof(Customer))); _model.SetAnnotationValue<ClrTypeAnnotation>(_model.FindType("Default.Order"), new ClrTypeAnnotation(typeof(Order))); _customerSet = _model.FindDeclaredEntityContainer("Default.Container").FindEntitySet("Customers"); _customer = new Customer() { FirstName = "Foo", LastName = "Bar", ID = 10, }; _serializerProvider = new DefaultODataSerializerProvider(); _customerType = _model.GetEdmTypeReference(typeof(Customer)).AsEntity(); _serializer = new ODataEntityTypeSerializer(_serializerProvider); _writeContext = new ODataSerializerContext() { EntitySet = _customerSet, Model = _model }; _entityInstanceContext = new EntityInstanceContext(_writeContext, _customerSet.ElementType.AsReference(), _customer); }
public void Ctor_SetsProperty_EntityType() { IEdmEntityTypeReference entityType = new Mock<IEdmEntityTypeReference>().Object; ODataEntityTypeSerializer serializer = new ODataEntityTypeSerializer(entityType, new DefaultODataSerializerProvider()); Assert.Equal(entityType, serializer.EntityType); }
public void CreateStructuralProperty_Calls_CreateODataValueOnInnerSerializer() { // Arrange Mock<IEdmTypeReference> propertyType = new Mock<IEdmTypeReference>(); propertyType.Setup(t => t.Definition).Returns(new EdmEntityType("Namespace", "Name")); Mock<IEdmStructuralProperty> property = new Mock<IEdmStructuralProperty>(); property.Setup(p => p.Name).Returns("PropertyName"); Mock<ODataSerializerProvider> serializerProvider = new Mock<ODataSerializerProvider>(MockBehavior.Strict); var entity = new { PropertyName = 42 }; Mock<ODataEdmTypeSerializer> innerSerializer = new Mock<ODataEdmTypeSerializer>(propertyType.Object, ODataPayloadKind.Property); ODataValue propertyValue = new Mock<ODataValue>().Object; property.Setup(p => p.Type).Returns(propertyType.Object); serializerProvider.Setup(s => s.GetEdmTypeSerializer(propertyType.Object)).Returns(innerSerializer.Object); innerSerializer.Setup(s => s.CreateODataValue(42, _writeContext)).Returns(propertyValue).Verifiable(); var serializer = new ODataEntityTypeSerializer(_serializer.EntityType, serializerProvider.Object); EntityInstanceContext entityInstanceContext = new EntityInstanceContext(_writeContext, _customerSet.ElementType.AsReference(), entity); // Act ODataProperty createdProperty = serializer.CreateStructuralProperty(property.Object, entityInstanceContext); // Assert innerSerializer.Verify(); Assert.Equal("PropertyName", createdProperty.Name); Assert.Equal(propertyValue, createdProperty.Value); }
public void CreateStructuralProperty_ThrowsSerializationException_TypeCannotBeSerialized() { // Arrange Mock<IEdmTypeReference> propertyType = new Mock<IEdmTypeReference>(); propertyType.Setup(t => t.Definition).Returns(new EdmEntityType("Namespace", "Name")); Mock<IEdmStructuralProperty> property = new Mock<IEdmStructuralProperty>(); Mock<ODataSerializerProvider> serializerProvider = new Mock<ODataSerializerProvider>(MockBehavior.Strict); IEdmEntityObject entity = new Mock<IEdmEntityObject>().Object; property.Setup(p => p.Type).Returns(propertyType.Object); serializerProvider.Setup(s => s.GetEdmTypeSerializer(propertyType.Object)).Returns<ODataEdmTypeSerializer>(null); var serializer = new ODataEntityTypeSerializer(_serializer.EntityType, serializerProvider.Object); // Act & Assert Assert.Throws<SerializationException>( () => serializer.CreateStructuralProperty(property.Object, new EntityInstanceContext { EdmObject = entity }), "'Namespace.Name' cannot be serialized using the ODataMediaTypeFormatter."); }
public void CreateNavigationLinks_Returns_NavigationLinkForEachNaviagationProperty() { // Arrange IEdmNavigationProperty property1 = CreateFakeNavigationProperty("Property1", _serializer.EntityType); IEdmNavigationProperty property2 = CreateFakeNavigationProperty("Property2", _serializer.EntityType); Mock<IEdmEntityType> entityType = new Mock<IEdmEntityType>(); entityType.Setup(e => e.DeclaredProperties).Returns(new[] { property1, property2 }); var serializer = new ODataEntityTypeSerializer(new EdmEntityTypeReference(entityType.Object, isNullable: false), new DefaultODataSerializerProvider()); MockEntitySetLinkBuilderAnnotation linkBuilder = new MockEntitySetLinkBuilderAnnotation { NavigationLinkBuilder = (ctxt, property, metadataLevel) => new Uri(property.Name, UriKind.Relative) }; _model.SetEntitySetLinkBuilderAnnotation(_customerSet, linkBuilder); // Act IEnumerable<ODataNavigationLink> links = serializer.CreateNavigationLinks(new EntityInstanceContext(), _writeContext); // Assert Assert.Equal(new[] { "Property1", "Property2" }, links.Select(l => l.Name)); Assert.Equal(new[] { "Property1", "Property2" }, links.Select(l => l.Url.ToString())); Assert.Equal(new bool?[] { false, false }, links.Select(l => l.IsCollection)); }