Example #1
0
        public void SelectViaOData(
            [IncludeDataSources(TestProvName.AllSqlServer2005Plus)] string context,
            [ValueSource(nameof(ODataQueriesTestCases))] ODataQueries testCase)
        {
            var modelBuilder = new ODataModelBuilder();
            var person       = modelBuilder.EntityType <PersonClass>();

            person.HasKey(p => p.Name);
            person.Property(p => p.Title);
            person.Property(p => p.YearsExperience);

            var model    = modelBuilder.GetEdmModel();
            var testData = GenerateTestData();

            using (var db = GetDataContext(context))
                using (var table = db.CreateLocalTable(testData))
                {
                    var path = new ODataPath();
                    ODataQueryContext queryContext = new ODataQueryContext(model, typeof(PersonClass), path);

                    var uri = new Uri("http://localhost:15580" + testCase.Query);
#if NETFRAMEWORK
                    var request = new HttpRequestMessage()
                    {
                        Method     = HttpMethod.Get,
                        RequestUri = uri
                    };

                    var config = new HttpConfiguration();
                    config.EnableDependencyInjection();

                    request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, config);
#else
                    // https://github.com/OData/AspNetCoreOData/blob/master/test/Microsoft.AspNetCore.OData.Tests/Extensions/RequestFactory.cs#L78
                    var         httpContext = new DefaultHttpContext();
                    HttpRequest request     = httpContext.Request;

                    IServiceCollection services = new ServiceCollection();
                    httpContext.RequestServices = services.BuildServiceProvider();

                    request.Method      = "GET";
                    request.Scheme      = uri.Scheme;
                    request.Host        = uri.IsDefaultPort ? new HostString(uri.Host) : new HostString(uri.Host, uri.Port);
                    request.QueryString = new QueryString(uri.Query);
                    request.Path        = new PathString(uri.AbsolutePath);
#endif
                    var options = new ODataQueryOptions(queryContext, request);

                    var resultQuery  = options.ApplyTo(table);
                    var materialized = Materialize(resultQuery);
                    Assert.That(materialized.Count, Is.EqualTo(1));
                }
        }
Example #2
0
        public void SelectViaOData(
            [IncludeDataSources(TestProvName.AllSqlServer2005Plus)] string context,
            [ValueSource(nameof(ODataQueriesTestCases))] ODataQueries testCase)
        {
            var modelBuilder = new ODataModelBuilder();
            var person       = modelBuilder.EntityType <PersonClass>();

            person.HasKey(p => p.Name);
            person.Property(p => p.Title);
            person.Property(p => p.YearsExperience);

            var model    = modelBuilder.GetEdmModel();
            var testData = GenerateTestData();

            using (var db = GetDataContext(context))
                using (var table = db.CreateLocalTable(testData))
                {
                    var path = new ODataPath();
                    ODataQueryContext queryContext = new ODataQueryContext(model, typeof(PersonClass), path);

                    var request = new HttpRequestMessage()
                    {
                        Method     = HttpMethod.Get,
                        RequestUri =
                            new Uri("http://localhost:15580" + testCase.Query)
                    };

                    var config = new HttpConfiguration();
                    config.EnableDependencyInjection();

                    request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, config);

                    var options = new ODataQueryOptions(queryContext, request);

                    var resultQuery  = options.ApplyTo(table);
                    var materialized = Materialize(resultQuery);
                    Assert.That(materialized.Count, Is.EqualTo(1));
                }
        }