public async Task Test_OnPostAsync_WhenMovieSessionStartsSoon_CheckoutRejectedRedirectedBackToCartMovieSessionInCartIsRemoved() { using (var db = new ApplicationDbContext(Utilities.TestingDbContextOptions <ApplicationDbContext>())) { DbInitializer.Initialize(db); checkoutIndexModel = new WMoSS.Pages.Checkout.IndexModel(db) { PageContext = pageContext, TempData = tempData, Url = new UrlHelper(pageContext) }; // ARRANGE var movieSession = await db.MovieSessions.FirstOrDefaultAsync(ms => ms.Id == 1); movieSession.ScheduledAt = DateTime.Now.AddMinutes(59); await db.SaveChangesAsync(); var cart = new WMoSS.Entities.Cart { CartItems = new WMoSS.Entities.CartItem[] { new WMoSS.Entities.CartItem { MovieSessionId = 1, TicketQuantity = 1 }, new WMoSS.Entities.CartItem { MovieSessionId = 2, TicketQuantity = 1 }, }.ToList() }; var order = new WMoSS.Entities.Order { FullName = "Sample user", MailingAddress = "123 Club house avenue", EmailAddress = "*****@*****.**", CardNumber = "4111111111111111", Expiry = "10/20", CVV = "123" }; checkoutIndexModel.Order = order; checkoutIndexModel.Cart = cart; var jsonCart = JsonConvert.SerializeObject(cart); byte[] jsonCartBytes = System.Text.Encoding.UTF8.GetBytes(jsonCart); mockSession.Setup(ms => ms.TryGetValue("cart", out jsonCartBytes)).Returns(true).Verifiable(); // ACT var result = await checkoutIndexModel.OnPostAsync(); // ASSERT var redirect = Assert.IsType <RedirectToPageResult>(result); Assert.Equal("/Cart/Index", redirect.PageName); Assert.NotNull(tempData["Danger"]); } }
public async Task Test_OrderTicketsArePopulated_AfterSuccessfulCheckout() { using (var db = new ApplicationDbContext(Utilities.TestingDbContextOptions <ApplicationDbContext>())) { DbInitializer.Initialize(db); checkoutIndexModel = new WMoSS.Pages.Checkout.IndexModel(db) { PageContext = pageContext, TempData = tempData, Url = new UrlHelper(pageContext) }; // ARRANGE var cart = new WMoSS.Entities.Cart { CartItems = new WMoSS.Entities.CartItem[] { new WMoSS.Entities.CartItem { MovieSessionId = 1, TicketQuantity = 1, } }.ToList() }; var order = new WMoSS.Entities.Order { FullName = "Sample user", MailingAddress = "123 Club house avenue", EmailAddress = "*****@*****.**", CardNumber = "4111111111111111", Expiry = "10/20", CVV = "123" }; checkoutIndexModel.Order = order; checkoutIndexModel.Cart = cart; var jsonCart = JsonConvert.SerializeObject(cart); byte[] jsonCartBytes = System.Text.Encoding.UTF8.GetBytes(jsonCart); mockSession.Setup(ms => ms.TryGetValue("cart", out jsonCartBytes)).Returns(true).Verifiable(); // ACT var result = await checkoutIndexModel.OnPostAsync(); // ASSERT Assert.IsType <RedirectToPageResult>(result); var expectedNumTickets = cart.CartItems.Sum(ci => ci.TicketQuantity); Assert.Equal(expectedNumTickets, checkoutIndexModel.Order.Tickets.Count()); } }
public async Task Test_OnPost_WithINVALIDModelState_RendersTheFormAgain() { // ARRANGE var cart = new WMoSS.Entities.Cart { CartItems = new WMoSS.Entities.CartItem[] { new WMoSS.Entities.CartItem { MovieSessionId = 1, TicketQuantity = 1, } }.ToList() }; var order = new WMoSS.Entities.Order { FullName = "", // INVALID MailingAddress = "123 Club house avenue", EmailAddress = "*****@*****.**", CardNumber = "4111111111111111", Expiry = "10/20", CVV = "123" }; checkoutIndexModel.Order = order; checkoutIndexModel.Cart = cart; var jsonCart = JsonConvert.SerializeObject(cart); byte[] jsonCartBytes = System.Text.Encoding.UTF8.GetBytes(jsonCart); mockSession.Setup(ms => ms.TryGetValue("cart", out jsonCartBytes)).Returns(true).Verifiable(); // check for validation errors SimulateValidation(order, checkoutIndexModel); // ACT var result = await checkoutIndexModel.OnPostAsync(); // ASSERT Assert.IsType <PageResult>(result); Assert.NotNull(tempData["Danger"]); }
public async Task TestOrderDetailsPage() { using (var db = new ApplicationDbContext(Utilities.TestingDbContextOptions <ApplicationDbContext>())) { DbInitializer.Initialize(db); OrderDetailsModel = new WMoSS.Pages.Order.DetailsModel(db) { PageContext = pageContext, TempData = tempData, Url = new UrlHelper(pageContext) }; var order = new WMoSS.Entities.Order { FullName = "Sample user", MailingAddress = "123 Club house avenue", EmailAddress = "*****@*****.**", CardNumber = "4111111111111111", Expiry = "10/20", Tickets = new WMoSS.Entities.Ticket[] { new WMoSS.Entities.Ticket { MovieSessionId = 1, SeatNumber = "A1" } } }; db.Orders.Add(order); await db.SaveChangesAsync(); // ACT var result = await OrderDetailsModel.OnGet(order.Id); // ASSERT Assert.IsType <PageResult>(result); Assert.NotNull(OrderDetailsModel.OrderDetails); } }