public async override Task Initalize() { if (_initialized) { return; } _initialized = true; var parser = new OeParser(new Uri("http://dummy/"), base.OeEdmModel); await parser.ExecuteOperationAsync(base.ParseUri("ResetManyColumns"), OeRequestHeaders.JsonDefault, null, new MemoryStream(), CancellationToken.None).ConfigureAwait(false); await DbFixture.ExecuteBatchAsync(base.OeEdmModel, "ManyColumns").ConfigureAwait(false); }
public async override Task Initalize() { if (_initialized) { return; } _initialized = true; var parser = new OeParser(new Uri("http://dummy/"), base.OeEdmModel); ODataUri odataUri = OeParser.ParseUri(base.OeEdmModel, new Uri("dbo.ResetManyColumns", UriKind.Relative)); await parser.ExecuteOperationAsync(odataUri, OeRequestHeaders.JsonDefault, null, new MemoryStream(), CancellationToken.None); await DbFixture.ExecuteBatchAsync(base.OeEdmModel, "ManyColumns", null); }
public async Task Delete() { var fixture = new RDBNull_DbFixtureInitDb(); await fixture.Initalize().ConfigureAwait(false); await DbFixture.ExecuteBatchAsync(fixture.OeEdmModel, "Delete").ConfigureAwait(false); using (var orderContext = fixture.CreateContext()) { Assert.Equal(5, orderContext.Categories.Count()); Assert.Equal(4, orderContext.Customers.Count()); Assert.Equal(3, orderContext.Orders.Count()); Assert.Equal(3, orderContext.OrderItems.Count()); Assert.Equal(2, orderContext.ShippingAddresses.Count()); Assert.Equal(2, orderContext.CustomerShippingAddress.Count()); var order1 = orderContext.Orders.Include(t => t.Items).Single(t => t.Name == "Order 1"); Assert.Equal("Product order 1 item 3", order1.Items.Single().Product); } }
public async Task Update() { var fixture = new RDBNull_DbFixtureInitDb(); await fixture.Initalize().ConfigureAwait(false); await DbFixture.ExecuteBatchAsync(fixture.OeEdmModel, "Update").ConfigureAwait(false); using (var orderContext = fixture.CreateInMemoryContext()) { var category = orderContext.Categories.Single(t => t.Name == "sombrero jacket"); Assert.Equal("jackets", orderContext.Categories.Single(t => t.Id == category.ParentId).Name); Assert.Equal(4, orderContext.Customers.Count()); Assert.Equal(4, orderContext.Orders.Count()); Assert.Equal(7, orderContext.OrderItems.Count()); Assert.Equal("New Order 1", orderContext.Orders.Single(t => t.Id == 1).Name); Assert.Equal("New Product order 1 item 3", orderContext.OrderItems.Single(t => t.OrderId == 1 && t.Id == 3).Product); Assert.Equal(Sex.Female, orderContext.Customers.Single(c => c.Country == "RU" && c.Id == 1).Sex); Assert.Null(orderContext.Customers.Single(c => c.Country == "EN" && c.Id == 1).Sex); } }
internal static async Task <List <Object> > OrdersCountItemsCount(DbFixture fixture, String request, Func <Model.OrderItem, bool> orderItemPredicate, int maxPageSize, bool navigationNextLink) { Query.OeModelBoundProvider modelBoundProvider = fixture.ModelBoundProvider; if (modelBoundProvider == null) { var modelBoundProviderBuilder = new PageNextLinkModelBoundBuilder(fixture.OeEdmModel, fixture.IsSqlite); modelBoundProvider = modelBoundProviderBuilder.BuildProvider(maxPageSize, navigationNextLink); } OeParser parser = fixture.CreateParser(request, modelBoundProvider); Uri uri = new Uri(parser.BaseUri, request); int expectedCount; long count = -1; var fromOe = new List <Object>(); do { var response = new MemoryStream(); await parser.ExecuteGetAsync(uri, OeRequestHeaders.JsonDefault.SetMaxPageSize(maxPageSize), response, CancellationToken.None).ConfigureAwait(false); response.Position = 0; var reader = new ResponseReader(parser.EdmModel); List <Object> result = reader.Read(response).Cast <Object>().ToList(); fromOe.AddRange(result); if (maxPageSize > 0) { Assert.InRange(result.Count, 0, maxPageSize); } var navigationPropertyParser = new OeParser(parser.BaseUri, parser.EdmModel, fixture.ModelBoundProvider); foreach (dynamic order in result) { using (var dbContext = fixture.CreateContext()) { String orderName = order.Name; expectedCount = dbContext.OrderItems.Where(i => i.Order.Name == orderName).ToList().Where(orderItemPredicate).Count(); } var navigationProperty = (IEnumerable)order.Items; ResponseReader.NavigationInfo info = reader.GetNavigationInfo(navigationProperty); if (!navigationNextLink && !uri.OriginalString.Contains("$skiptoken=")) { Assert.Equal(expectedCount, info.Count); } var navigationPropertyResponse = new MemoryStream(); await navigationPropertyParser.ExecuteGetAsync(info.NextPageLink, OeRequestHeaders.JsonDefault, navigationPropertyResponse, CancellationToken.None).ConfigureAwait(false); navigationPropertyResponse.Position = 0; var navigationPropertyReader = new ResponseReader(parser.EdmModel); foreach (dynamic orderItem in navigationPropertyReader.Read(navigationPropertyResponse)) { order.Items.Add(orderItem); } if (navigationNextLink) { Assert.Equal(expectedCount, navigationPropertyReader.ResourceSet.Count); } } if (count < 0) { count = reader.ResourceSet.Count.GetValueOrDefault(); } uri = reader.ResourceSet.NextPageLink; }while (uri != null); using (var dbContext = fixture.CreateContext()) expectedCount = dbContext.Orders.Count(); Assert.Equal(expectedCount, count); return(fromOe); }