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)); } }
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)); } }