public void CreateODataEnumValue_ReturnsCorrectEnumMember() { // Arrange var builder = new ODataConventionModelBuilder(); builder.EnumType <BookCategory>().Namespace = "NS"; IEdmModel model = builder.GetEdmModel(); IEdmEnumType enumType = model.SchemaElements.OfType <IEdmEnumType>().Single(); IServiceProvider serviceProvder = new Mock <IServiceProvider>().Object; var provider = new DefaultODataSerializerProvider(serviceProvder); ODataEnumSerializer serializer = new ODataEnumSerializer(provider); ODataSerializerContext writeContext = new ODataSerializerContext { Model = model }; // Act ODataEnumValue value = serializer.CreateODataEnumValue(BookCategory.Newspaper, new EdmEnumTypeReference(enumType, false), writeContext); // Assert Assert.NotNull(value); Assert.Equal("news", value.Value); }
public void CreateODataValue_ThrowsInvalidOperation_NonEnumType() { // Arrange ODataSerializerProvider provider = new Mock <ODataSerializerProvider>().Object; ODataEnumSerializer serializer = new ODataEnumSerializer(provider); IEdmTypeReference expectedType = EdmCoreModel.Instance.GetString(false); // Act & Assert ExceptionAssert.Throws <InvalidOperationException>(() => serializer.CreateODataValue(graph: null, expectedType: expectedType, writeContext: null), "ODataEnumSerializer cannot write an object of type 'Edm.String'."); }
public void AddTypeNameAnnotationAsNeeded_DoesNotAddAnnotation() { // Arrange ODataEnumValue enumValue = new ODataEnumValue("value"); IEdmEnumTypeReference enumType = new EdmEnumTypeReference( new EdmEnumType("TestModel", "EnumType"), isNullable: false); // Act ODataEnumSerializer.AddTypeNameAnnotationAsNeeded(enumValue, enumType, ODataMetadataLevel.Minimal); // Assert ODataTypeAnnotation annotation = enumValue.TypeAnnotation; Assert.Null(annotation); }
public void CreateODataValue_RetrunsNull_IfGraphNull() { // Arrange ODataSerializerContext writeContext = new ODataSerializerContext(); ODataSerializerProvider provider = new Mock <ODataSerializerProvider>().Object; ODataEnumSerializer serializer = new ODataEnumSerializer(provider); IEdmEnumType enumType = new EdmEnumType("NS", "Enum"); IEdmTypeReference expectedType = new EdmEnumTypeReference(enumType, false); // Act ODataValue actual = serializer.CreateODataValue(graph: null, expectedType: expectedType, writeContext); // Assert Assert.IsType <ODataNullValue>(actual); }
public void AddTypeNameAnnotationAsNeeded_AddAnnotation_InFullMetadataMode() { // Arrange ODataEnumValue enumValue = new ODataEnumValue("value"); IEdmEnumTypeReference enumType = new EdmEnumTypeReference( new EdmEnumType("TestModel", "EnumType"), isNullable: false); // Act ODataEnumSerializer.AddTypeNameAnnotationAsNeeded(enumValue, enumType, ODataMetadataLevel.Full); // Assert ODataTypeAnnotation annotation = enumValue.TypeAnnotation; Assert.NotNull(annotation); Assert.Equal("TestModel.EnumType", annotation.TypeName); }
public async Task WriteObjectAsync_ThrowsArgumentNull_ForInputParameters() { // Arrange ODataSerializerProvider provider = new Mock <ODataSerializerProvider>().Object; ODataEnumSerializer serializer = new ODataEnumSerializer(provider); // Act & Assert await ExceptionAssert.ThrowsArgumentNullAsync(() => serializer.WriteObjectAsync(graph: null, type: null, messageWriter: null, writeContext: null), "messageWriter"); // Arrange & Act & Assert ODataMessageWriter messageWriter = ODataTestUtil.GetMockODataMessageWriter(); await ExceptionAssert.ThrowsArgumentNullAsync(() => serializer.WriteObjectAsync(graph: null, type: null, messageWriter, null), "writeContext"); // Arrange & Act & Assert ODataSerializerContext context = new ODataSerializerContext(); context.RootElementName = null; await ExceptionAssert.ThrowsAsync <ArgumentException>(() => serializer.WriteObjectAsync(graph: null, type: null, messageWriter, context), "The 'RootElementName' property is required on 'ODataSerializerContext'. (Parameter 'writeContext')"); }