public void ConvertResourceOrResourceSetCanConvert_ResourceWithMulitipleKeys() { // Arrange string odataValue = "{\"@odata.id\":\"http://localhost/odata/CustomerWithKeys(First='abc',Last='efg')\"}"; IEdmModel model = GetEdmModel(); IEdmEntityType customerType = model.SchemaElements.OfType <IEdmEntityType>().First(c => c.Name == "CustomerWithKeys"); IEdmTypeReference edmTypeReference = new EdmEntityTypeReference(customerType, false); HttpRequest request = RequestFactory.Create("Get", "http://localhost/", opt => opt.AddModel("odata", model)); request.ODataFeature().PrefixName = "odata"; ODataDeserializerContext context = new ODataDeserializerContext { Model = model, Request = request, ResourceType = typeof(CustomerWithKeys), ResourceEdmType = edmTypeReference, }; // Act object value = ODataModelBinderConverter.ConvertResourceOrResourceSet(odataValue, edmTypeReference, context); // Assert Assert.NotNull(value); CustomerWithKeys customer = Assert.IsType <CustomerWithKeys>(value); Assert.Equal("abc", customer.First); Assert.Equal("efg", customer.Last); }
public void ConvertResourceOrResourceSetCanConvert_SingleResource() { // Arrange string odataValue = "{\"Id\": 9, \"Name\": \"Sam\"}"; IEdmModel model = GetEdmModel(); IEdmEntityType customerType = model.SchemaElements.OfType <IEdmEntityType>().First(c => c.Name == "Customer"); IEdmTypeReference edmTypeReference = new EdmEntityTypeReference(customerType, false); HttpRequest request = RequestFactory.Create("Get", "http://localhost/", opt => opt.AddModel("odata", model)); request.ODataFeature().PrefixName = "odata"; ODataDeserializerContext context = new ODataDeserializerContext { Model = model, Request = request, ResourceType = typeof(Customer), ResourceEdmType = edmTypeReference, }; // Act object value = ODataModelBinderConverter.ConvertResourceOrResourceSet(odataValue, edmTypeReference, context); // Assert Assert.NotNull(value); Customer customer = Assert.IsType <Customer>(value); Assert.Equal(9, customer.Id); Assert.Equal("Sam", customer.Name); }
public void ConvertResourceOrResourceSetCanConvert_ResourceSet() { // Arrange string odataValue = "[{\"Id\": 9, \"Name\": \"Sam\"}, {\"Id\": 18, \"Name\": \"Peter\"}]"; IEdmModel model = GetEdmModel(); IEdmEntityType customerType = model.SchemaElements.OfType <IEdmEntityType>().First(c => c.Name == "Customer"); IEdmTypeReference edmTypeReference = new EdmEntityTypeReference(customerType, false); HttpRequest request = RequestFactory.Create("Get", "http://localhost/", opt => opt.AddModel("odata", model)); request.ODataFeature().PrefixName = "odata"; ODataDeserializerContext context = new ODataDeserializerContext { Model = model, Request = request, ResourceType = typeof(Customer), ResourceEdmType = edmTypeReference, }; IEdmTypeReference setType = new EdmCollectionTypeReference(new EdmCollectionType(edmTypeReference)); // Act object value = ODataModelBinderConverter.ConvertResourceOrResourceSet(odataValue, setType, context); // Assert Assert.NotNull(value); IEnumerable <Customer> customers = Assert.IsAssignableFrom <IEnumerable <Customer> >(value); Assert.Collection(customers, e => { Assert.Equal(9, e.Id); Assert.Equal("Sam", e.Name); }, e => { Assert.Equal(18, e.Id); Assert.Equal("Peter", e.Name); }); }