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); }
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(); }
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 Ctor_ThrowsArgumentNull_DeserializerProvider() { ODataSerializerProvider serializerProvider = new DefaultODataSerializerProvider(); ODataPayloadKind[] payloadKinds = new ODataPayloadKind[0]; Assert.ThrowsArgumentNull( () => new ODataMediaTypeFormatter(deserializerProvider: null, serializerProvider: serializerProvider, payloadKinds: payloadKinds), "deserializerProvider"); }
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); }