Exemple #1
0
        public async Task BoundFunctionSingle()
        {
            int        orderId;
            List <int> expectedResult;

            using (var dbContext = Fixture.CreateContext())
            {
                orderId        = dbContext.Orders.Single(i => i.Name == "Order 1").Id;
                expectedResult = dbContext.OrderItems.Where(i => i.OrderId == orderId).Select(i => i.Id).ToList();
            }

            Db.OeDataAdapter dataAdapter = Fixture.EdmModel.GetDataAdapter(Fixture.EdmModel.EntityContainer);
            String           request     = $"Orders({orderId})/{dataAdapter.DataContextType.Namespace}.BoundFunctionSingle(customerNames=['Natasha','Ivan','Sasha'])";

            ODataUri  odataUri = Fixture.ParseUri(request);
            IEdmModel edmModel = Fixture.EdmModel.GetEdmModel(odataUri.Path);
            var       parser   = new OeParser(odataUri.ServiceRoot, edmModel);
            var       uri      = new Uri(odataUri.ServiceRoot, request);

            var response = new MemoryStream();
            await parser.ExecuteQueryAsync(odataUri, OeRequestHeaders.JsonDefault, response, CancellationToken.None).ConfigureAwait(false);

            response.Position = 0;

            List <Object> fromOe = new ResponseReader(edmModel).Read(response).Cast <Object>().ToList();

            Assert.Equal(expectedResult, fromOe.Select(i => (int)((dynamic)i).Id).OrderBy(id => id));
        }