public async Task RunActionAsync(MockBizActionWithWriteModes mode) { //SETUP var options = EfInMemory.CreateNewContextOptions(); using (var context = new EfCoreContext(options)) { context.SeedDatabaseFourBooks(); var action = new MockBizActionWithWriteAsync(context); var runner = new RunnerWriteDbWithValidationAsync <MockBizActionWithWriteModes, string>(action, context); //ATTEMPT var output = await runner.RunActionAsync(mode); //VERIFY output.ShouldEqual(mode.ToString()); runner.HasErrors.ShouldEqual(mode != MockBizActionWithWriteModes.Ok); context.Orders.Count().ShouldEqual(mode != MockBizActionWithWriteModes.Ok ? 0 : 1); if (mode == MockBizActionWithWriteModes.BizError) { runner.Errors.Single().ErrorMessage.ShouldEqual("There is a biz error."); } if (mode == MockBizActionWithWriteModes.SaveChangesError) { runner.Errors.Single().ErrorMessage.ShouldEqual("If you want to order a 100 or more books please phone us on 01234-5678-90"); } } }
public void TestPlaceOrderOk() { //SETUP var options = EfInMemory.CreateNewContextOptions(); using (var context = new EfCoreContext(options)) { context.SeedDatabaseFourBooks(); } using (var context = new EfCoreContext(options)) { var mockCookieRequests = new MockHttpCookieAccess(CheckoutCookie.CheckoutCookieName, $"{Guid.NewGuid()},1,2"); var service = new PlaceOrderService(mockCookieRequests.CookiesIn, mockCookieRequests.CookiesOut, context); //ATTEMPT var orderId = service.PlaceOrder(true); context.SaveChanges(); //VERIFY orderId.ShouldNotEqual(0); service.Errors.Count.ShouldEqual(0); context.Orders.Count().ShouldEqual(1); context.Orders.First().OrderId.ShouldEqual(orderId); } }
public void TestUpdateLineItemInOrder() { //SETUP var options = EfInMemory.CreateNewContextOptions(); using (var context = new EfCoreContext(options)) { context.SeedDatabaseFourBooks(); var userId = Guid.NewGuid(); var order = new Order { CustomerName = userId, LineItems = new List <LineItem> { new LineItem { BookId = 1, LineNum = 0, BookPrice = 123, NumBooks = 1 } } }; context.Orders.Add(order); context.SaveChanges(); } //ATTEMPT using (var context = new EfCoreContext(options)) { var order = context.Orders.Include(x => x.LineItems).First(); order.LineItems = new List <LineItem> { new LineItem { BookId = 1, LineNum = 0, BookPrice = 456, NumBooks = 1 } }; context.SaveChanges(); } //VERIFY using (var context = new EfCoreContext(options)) { var order = context.Orders.Include(x => x.LineItems).First(); order.LineItems.First().BookPrice.ShouldEqual(456); } }
public void RunAction(int input, bool hasErrors) { //SETUP var options = EfInMemory.CreateNewContextOptions(); using (var context = new EfCoreContext(options)) { var action = new MockBizAction(context); var runner = new RunnerWriteDb <int, string>(action, context); //ATTEMPT var output = runner.RunAction(input); //VERIFY output.ShouldEqual(input.ToString()); runner.HasErrors.ShouldEqual(hasErrors); context.Authors.Count().ShouldEqual(hasErrors ? 0 : 1); } }
public void TestCheckoutListOneBookDatabaseOneBook() { //SETUP var options = EfInMemory.CreateNewContextOptions(); using (var context = new EfCoreContext(options)) { context.SeedDatabaseDummyBooks(1); } //two line items: BookId:1 NumBooks:1 var mockCookieRequests = new MockHttpCookieAccess(CheckoutCookie.CheckoutCookieName, $"{Guid.NewGuid()},1,1"); //ATTEMPT using (var context = new EfCoreContext(options)) { var service = new CheckoutListService(context, mockCookieRequests.CookiesIn); var list = service.GetCheckoutList(); //VERIFY list.Count.ShouldEqual(1); list.First().BookId.ShouldEqual(1); list.First().BookPrice.ShouldEqual(1); } }