Esempio n. 1
0
        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"]);
            }
        }
Esempio n. 2
0
        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());
            }
        }
Esempio n. 3
0
        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"]);
        }
Esempio n. 4
0
        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);
            }
        }