コード例 #1
0
        public void CanSerializerSingleton()
        {
            // Arrange
            const string expect = "{" +
                                  "\"@odata.context\":\"http://localhost/odata/$metadata#Boss\"," +
                                  "\"EmployeeId\":987,\"EmployeeName\":\"John Mountain\"}";

            IEdmModel              model       = GetEdmModel();
            IEdmSingleton          singleton   = model.EntityContainer.FindSingleton("Boss");
            HttpRequestMessage     request     = GetRequest(model, singleton);
            ODataSerializerContext readContext = new ODataSerializerContext()
            {
                Url              = new UrlHelper(request),
                Path             = request.ODataProperties().Path,
                Model            = model,
                NavigationSource = singleton
            };

            ODataSerializerProvider serializerProvider = new DefaultODataSerializerProvider();
            EmployeeModel           boss = new EmployeeModel {
                EmployeeId = 987, EmployeeName = "John Mountain"
            };
            MemoryStream bufferedStream = new MemoryStream();

            // Act
            ODataEntityTypeSerializer serializer = new ODataEntityTypeSerializer(serializerProvider);

            serializer.WriteObject(boss, typeof(EmployeeModel), GetODataMessageWriter(model, bufferedStream), readContext);

            // Assert
            string result = Encoding.UTF8.GetString(bufferedStream.ToArray());

            Assert.Equal(expect, result);
        }
コード例 #2
0
        public void Request_IsPassedThroughDeserializerContext()
        {
            // Arrange
            var model   = CreateModel();
            var request = CreateFakeODataRequest(model);
            Mock <ODataEdmTypeDeserializer>  deserializer         = new Mock <ODataEdmTypeDeserializer>(ODataPayloadKind.Property);
            Mock <ODataDeserializerProvider> deserializerProvider = new Mock <ODataDeserializerProvider>();

            deserializerProvider.Setup(p => p.GetEdmTypeDeserializer(It.IsAny <IEdmTypeReference>())).Returns(deserializer.Object);
            deserializer
            .Setup(d => d.Read(It.IsAny <ODataMessageReader>(), typeof(int), It.Is <ODataDeserializerContext>(c => c.Request == request)))
            .Verifiable();
            ODataSerializerProvider serializerProvider = new DefaultODataSerializerProvider();

            var formatter = new ODataMediaTypeFormatter(deserializerProvider.Object, serializerProvider, Enumerable.Empty <ODataPayloadKind>());

            formatter.Request = request;
            HttpContent content = new StringContent("42");

            content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json;odata=fullmetadata");

            // Act
            formatter.ReadFromStreamAsync(typeof(int), new MemoryStream(), content, formatterLogger: null);

            // Assert
            deserializer.Verify();
        }
コード例 #3
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);
        }
コード例 #4
0
        public void Ctor_ThrowsArgumentNull_DeserializerProvider()
        {
            ODataSerializerProvider serializerProvider = new DefaultODataSerializerProvider();

            ODataPayloadKind[] payloadKinds = new ODataPayloadKind[0];

            Assert.ThrowsArgumentNull(
                () => new ODataMediaTypeFormatter(deserializerProvider: null, serializerProvider: serializerProvider, payloadKinds: payloadKinds),
                "deserializerProvider");
        }
コード例 #5
0
        public void GetEdmTypeSerializer_ReturnODataEnumSerializer_ForEnumType()
        {
            // Arrange
            IEdmTypeReference edmType = new EdmEnumTypeReference(new EdmEnumType("TestModel", "Color"), isNullable: false);

            // Act
            ODataEdmTypeSerializer serializer = new DefaultODataSerializerProvider().GetEdmTypeSerializer(edmType);

            // Assert
            Assert.NotNull(serializer);
            Assert.IsType <ODataEnumSerializer>(serializer);
        }