public void TestPlaceOrderOk() { //SETUP var userId = Guid.NewGuid(); var options = SqliteInMemory.CreateOptions <EfCoreContext>(); using (var context = new EfCoreContext(options, new FakeUserIdService(userId))) { context.Database.EnsureCreated(); context.SeedDatabaseFourBooks(); var mockCookieRequests = new MockHttpCookieAccess(BasketCookie.BasketCookieName, $"{userId},1,2"); var service = new PlaceOrderServiceTransact(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 TestPlaceOrderBad() { //SETUP var inMemDb = new SqliteInMemory(); using (var context = inMemDb.GetContextWithSetup()) { context.SeedDatabaseFourBooks(); var mockCookieRequests = new MockHttpCookieAccess(CheckoutCookie.CheckoutCookieName, $"{Guid.NewGuid()},1,2"); var service = new PlaceOrderServiceTransact(mockCookieRequests.CookiesIn, mockCookieRequests.CookiesOut, context); //ATTEMPT var orderId = service.PlaceOrder(false); context.SaveChanges(); //VERIFY orderId.ShouldEqual(0); service.Errors.Count.ShouldEqual(1); service.Errors.First().ErrorMessage.ShouldEqual("You must accept the T&Cs to place an order."); } }