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>(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, propertyType.Object, _writeContext)).Returns(propertyValue).Verifiable(); var serializer = new ODataEntityTypeSerializer(serializerProvider.Object); EntityInstanceContext entityInstanceContext = new EntityInstanceContext(_writeContext, _customerType, 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(serializerProvider.Object); // Act & Assert Assert.Throws<SerializationException>( () => serializer.CreateStructuralProperty(property.Object, new EntityInstanceContext { EdmObject = entity }), "'Namespace.Name' cannot be serialized using the ODataMediaTypeFormatter."); }