Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
            });
        }