예제 #1
0
        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);
        }
예제 #2
0
        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'.");
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }
예제 #6
0
        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')");
        }