public void TestCheckoutListTwoBooksSqLite() { //SETUP var options = SqliteInMemory.CreateOptions <EfCoreContext>(); using (var context = new EfCoreContext(options)) { context.Database.EnsureCreated(); context.SeedDatabaseDummyBooks(10); //two line items: BookId:1 NumBooks:2, BookId:2 NumBooks:3 var mockCookieRequests = new MockHttpCookieAccess(BasketCookie.BasketCookieName, $"{Guid.NewGuid()},1,2,2,3"); //ATTEMPT var service = new CheckoutListService(context, mockCookieRequests.CookiesIn); var list = service.GetCheckoutList(); //VERIFY for (int i = 0; i < list.Count(); i++) { list[i].BookId.ShouldEqual(i + 1); list[i].NumBooks.ShouldEqual((short)(i + 2)); list[i].BookPrice.ShouldEqual((i + 1)); } } }
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 TestCheckoutListOneBookDatabaseOneBook() { //SETUP var options = SqliteInMemory.CreateOptions <EfCoreContext>(); using (var context = new EfCoreContext(options)) { context.Database.EnsureCreated(); context.SeedDatabaseDummyBooks(1); } //two line items: BookId:1 NumBooks:1 var mockCookieRequests = new MockHttpCookieAccess(BasketCookie.BasketCookieName, $"{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); } }
public void TestPlaceOrderBad() { //SETUP var userId = Guid.NewGuid(); var options = SqliteInMemory.CreateOptions <EfCoreContext>(); using var context = new EfCoreContext(options, new FakeUserIdService(userId)); context.Database.EnsureCreated(); context.SeedDatabaseFourBooks(); context.ChangeTracker.Clear(); var mockCookieRequests = new MockHttpCookieAccess(BasketCookie.BasketCookieName, $"{Guid.NewGuid()},1,2"); var service = new PlaceOrderService(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."); }
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(); } using (var context = new EfCoreContext(options, new FakeUserIdService(userId))) { var mockCookieRequests = new MockHttpCookieAccess(BasketCookie.BasketCookieName, $"{userId},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 TestCheckoutListTwoBooksSqLite() { //SETUP var inMemDb = new SqliteInMemory(); using (var context = inMemDb.GetContextWithSetup()) { context.SeedDatabaseDummyBooks(10); //two line items: BookId:1 NumBooks:2, BookId:2 NumBooks:3 var mockCookieRequests = new MockHttpCookieAccess(CheckoutCookie.CheckoutCookieName, $"{Guid.NewGuid()},1,2,2,3"); //ATTEMPT var service = new CheckoutListService(context, mockCookieRequests.CookiesIn); var list = service.GetCheckoutList(); //VERIFY for (int i = 0; i < list.Count(); i++) { list[i].BookId.ShouldEqual(i + 1); list[i].NumBooks.ShouldEqual((short)(i + 2)); list[i].BookPrice.ShouldEqual((i + 1)); } } }
public void CreateWithExistingInCookie() { //SETUP //ATTEMPT var mockCookieRequests = new MockHttpCookieAccess("Test", "Content"); //VERIFY mockCookieRequests.CookiesIn.ShouldNotBeNull(); mockCookieRequests.CookiesIn.Count.ShouldEqual(1); mockCookieRequests.CookiesIn["Test"].ShouldEqual("Content"); }
public void CreateEmptyCookiesAccess() { //SETUP //ATTEMPT var mockCookieRequests = new MockHttpCookieAccess(); //VERIFY mockCookieRequests.CookiesIn.ShouldNotBeNull(); mockCookieRequests.CookiesIn.Count.ShouldEqual(0); mockCookieRequests.CookiesOut.ShouldNotBeNull(); }
public void AddOutCookie() { //SETUP var mockCookieRequests = new MockHttpCookieAccess(); //ATTEMPT mockCookieRequests.CookiesOut.Append("Test", "Content"); //VERIFY mockCookieRequests.ResponseCookies.Count.ShouldEqual(1); mockCookieRequests.ResponseCookies.First().ShouldEqual("Test=Content; path=/"); }
public void AddOutCookie() { //SETUP var mockCookieRequests = new MockHttpCookieAccess(); //ATTEMPT mockCookieRequests.CookiesOut.Append("Test", "Content"); //VERIFY mockCookieRequests.ResponseCookieValues.Count.ShouldEqual(1); mockCookieRequests.ResponseCookieValues.First().ShouldEqual( new KeyValuePair <string, string>("Test", "Content")); }
public void TestGetUsersOrdersOk() { //SETUP var inMemDb = new SqliteInMemory(); using (var context = inMemDb.GetContextWithSetup()) { 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 = 456 } } }; context.Orders.Add(order); context.SaveChanges(); var mockCookieRequests = new MockHttpCookieAccess(CheckoutCookie.CheckoutCookieName, $"{userId}"); var service = new DisplayOrdersService(context); //ATTEMPT var orders = service.GetUsersOrders(mockCookieRequests.CookiesIn); //VERIFY orders.Count.ShouldEqual(1); orders.First().LineItems.ShouldNotBeNull(); var lineItems = orders.First().LineItems.ToList(); lineItems.Count.ShouldEqual(1); lineItems.First().BookId.ShouldEqual(1); lineItems.First().BookPrice.ShouldEqual(123); lineItems.First().NumBooks.ShouldEqual((short)456); } }
public void TestCheckoutListBookWithPromotion() { //SETUP var options = SqliteInMemory.CreateOptions <EfCoreContext>(); using var context = new EfCoreContext(options); context.Database.EnsureCreated(); context.SeedDatabaseFourBooks(); //I select the last book, which has a promotion var mockCookieRequests = new MockHttpCookieAccess(BasketCookie.BasketCookieName, $"{Guid.NewGuid()},4,1"); //ATTEMPT var service = new CheckoutListService(context, mockCookieRequests.CookiesIn); var list = service.GetCheckoutList(); //VERIFY list.Count.ShouldEqual(1); list.First().BookPrice.ShouldEqual(219); }
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."); } }
public void TestCheckoutListBookWithPromotion() { //SETUP var inMemDb = new SqliteInMemory(); using (var context = inMemDb.GetContextWithSetup()) { context.SeedDatabaseFourBooks(); //I select the last book, which has a promotion var mockCookieRequests = new MockHttpCookieAccess(CheckoutCookie.CheckoutCookieName, $"{Guid.NewGuid()},4,1"); //ATTEMPT var service = new CheckoutListService(context, mockCookieRequests.CookiesIn); var list = service.GetCheckoutList(); //VERIFY list.Count.ShouldEqual(1); list.First().BookPrice.ShouldEqual(219); } }