public void Read_PatchMode() { // Arrange string content = Resources.SupplierPatch; var readContext = new ODataDeserializerContext { Path = new ODataPath(new EntitySetSegment(_edmModel.EntityContainer.FindEntitySet("Suppliers"))), Model = _edmModel, ResourceType = typeof(Delta <Supplier>) }; ODataResourceDeserializer deserializer = new ODataResourceDeserializer(_deserializerProvider); // Act Delta <Supplier> supplier = deserializer.Read(GetODataMessageReader(GetODataMessage(content), _edmModel), typeof(Delta <Supplier>), readContext) as Delta <Supplier>; // Assert Assert.NotNull(supplier); Assert.Equal(supplier.GetChangedPropertyNames(), new string[] { "ID", "Name", "Address" }); Assert.Equal((supplier as dynamic).Name, "Supplier Name"); Assert.Equal("Supplier City", (supplier as dynamic).Address.City); Assert.Equal("123456", (supplier as dynamic).Address.ZipCode); }
public void ReadFromStreamAsync_ComplexTypeAndInlineData() { // Arrange string content = Resources.SupplierRequestEntry; ODataResourceDeserializer deserializer = new ODataResourceDeserializer(_deserializerProvider); var readContext = new ODataDeserializerContext { Path = new ODataPath(new EntitySetSegment(_edmModel.EntityContainer.FindEntitySet("Suppliers"))), Model = _edmModel, ResourceType = typeof(Supplier) }; // Act Supplier supplier = deserializer.Read(GetODataMessageReader(GetODataMessage(content), _edmModel), typeof(Supplier), readContext) as Supplier; // Assert Assert.Equal(supplier.Name, "Supplier Name"); Assert.NotNull(supplier.Products); Assert.Equal(6, supplier.Products.Count); Assert.Equal("soda", supplier.Products.ToList()[1].Name); Assert.NotNull(supplier.Address); Assert.Equal("Supplier City", supplier.Address.City); Assert.Equal("123456", supplier.Address.ZipCode); }
public void Read_ThrowsArgumentNull_ReadContext() { var deserializer = new ODataResourceDeserializer(_deserializerProvider); Assert.ThrowsArgumentNull( () => deserializer.Read(messageReader: ODataTestUtil.GetMockODataMessageReader(), type: typeof(Product), readContext: null), "readContext"); }
public void Read_ThrowsArgumentNull_MessageReader() { var deserializer = new ODataResourceDeserializer(_deserializerProvider); Assert.ThrowsArgumentNull( () => deserializer.Read(messageReader: null, type: typeof(Product), readContext: _readContext), "messageReader"); }
public void Read_ThrowsOnUnknownEntityType() { // Arrange string content = Resources.SupplierRequestEntry; ODataResourceDeserializer deserializer = new ODataResourceDeserializer(_deserializerProvider); // Act & Assert Assert.Throws <ODataException>(() => deserializer.Read(GetODataMessageReader(GetODataMessage(content), _edmModel), typeof(Product), _readContext), "The property 'Concurrency' does not exist on type 'ODataDemo.Product'. Make sure to only use property names that are defined by the type or mark the type as open type."); }
public void Read_ThrowsArgument_EntitysetMissing() { // Arrange var deserializer = new ODataResourceDeserializer(_deserializerProvider); ODataDeserializerContext readContext = new ODataDeserializerContext { Path = new ODataPath(), Model = _edmModel, ResourceType = typeof(Product) }; // Act & Assert Assert.Throws <SerializationException>( () => deserializer.Read(ODataTestUtil.GetMockODataMessageReader(), typeof(Product), readContext), "The related entity set or singleton cannot be found from the OData path. The related entity set or singleton is required to deserialize the payload."); }
public void Read_ThrowsArgument_ODataPathMissing_ForEntity() { // Arrange var deserializer = new ODataResourceDeserializer(_deserializerProvider); ODataDeserializerContext readContext = new ODataDeserializerContext { Model = _edmModel, ResourceType = typeof(Product) }; // Act & Assert Assert.ThrowsArgument( () => deserializer.Read(ODataTestUtil.GetMockODataMessageReader(), typeof(Product), readContext), "readContext", "The operation cannot be completed because no ODataPath is available for the request."); }
public void ReadFromStreamAsync() { // Arrange string content = Resources.ProductRequestEntry; ODataResourceDeserializer deserializer = new ODataResourceDeserializer(_deserializerProvider); // Act Product product = deserializer.Read(GetODataMessageReader(GetODataMessage(content), _edmModel), typeof(Product), _readContext) as Product; // Assert Assert.Equal(product.ID, 0); Assert.Equal(product.Rating, 4); Assert.Equal(product.Price, 2.5m); Assert.Equal(product.ReleaseDate, new DateTimeOffset(new DateTime(1992, 1, 1, 0, 0, 0), TimeSpan.Zero)); Assert.Equal(product.PublishDate, new Date(1997, 7, 1)); Assert.Null(product.DiscontinuedDate); }
public void CanDeserializerSingletonPayloadFromStream() { // Arrange const string payload = "{" + "\"@odata.context\":\"http://localhost/odata/$metadata#CEO\"," + "\"EmployeeId\":789," + "\"EmployeeName\":\"John Hark\"}"; ODataResourceDeserializer deserializer = new ODataResourceDeserializer(_deserializerProvider); // Act EmployeeModel employee = deserializer.Read( GetODataMessageReader(payload), typeof(EmployeeModel), _readContext) as EmployeeModel; // Assert Assert.NotNull(employee); Assert.Equal(789, employee.EmployeeId); Assert.Equal("John Hark", employee.EmployeeName); }