public void Test_WhenModifyCart_IsSuccessful_RedirectsToCartPage() { var cartItem = new WMoSS.Entities.CartItem { MovieSessionId = 1, TicketQuantity = 1 }; // ARRANGE // Extension methods cannot be mocked // so serialize the cart into string they convert to byte array // Also do not mock the cart and cart items var cart = new WMoSS.Entities.Cart { CartItems = new WMoSS.Entities.CartItem[] { cartItem } }; var jsonCart = JsonConvert.SerializeObject(cart); byte[] jsonCartBytes = System.Text.Encoding.UTF8.GetBytes(jsonCart); mockSession.Setup(ms => ms.TryGetValue("cart", out jsonCartBytes)).Returns(true).Verifiable(); CartIndexModel.CartItem = cart.CartItems.FirstOrDefault(); // ACT var result = CartIndexModel.OnPostModifyCart(); // ASSERT var redirect = Assert.IsType <RedirectToPageResult>(result); Assert.Equal("/Cart/Index", redirect.PageName); }
public void Test_WhenModifyCartFailsToModifyCart_ItRendersTheCartPageAgain() { // ARRANGE var cartItem = new WMoSS.Entities.CartItem { MovieSessionId = 1, TicketQuantity = 1 }; var cartItem2 = new WMoSS.Entities.CartItem { MovieSessionId = 2, TicketQuantity = 1 }; var cart = new WMoSS.Entities.Cart { CartItems = new WMoSS.Entities.CartItem[] { cartItem } }; var jsonCart = JsonConvert.SerializeObject(cart); byte[] jsonCartBytes = System.Text.Encoding.UTF8.GetBytes(jsonCart); mockSession.Setup(ms => ms.TryGetValue("cart", out jsonCartBytes)).Returns(true).Verifiable(); // assume cart item submitted has different movie session id // this should pass the ModelState.IsValid but fails on further validation CartIndexModel.CartItem = cartItem2; // ACT var result = CartIndexModel.OnPostModifyCart(); // ASSERT Assert.IsType <PageResult>(result); }
public void Test_Add() { // ARRANGE var cartItem = new WMoSS.Entities.CartItem { MovieSessionId = 1, TicketQuantity = 1 }; // ACT cart.Add(cartItem); // ASSERT Assert.Equal(1, cart.CartItems.Count); }
public void Test_WhenModifyCart_ModelStateIsNotValid_RendersTheCartPageAgain() { // ARRANGE var cartItem = new WMoSS.Entities.CartItem { MovieSessionId = 1, TicketQuantity = 0 }; CartIndexModel.ModelState.AddModelError(nameof(cartItem), "Ticket quantity cannot be 0"); // ACT var result = CartIndexModel.OnPostModifyCart(); // ASSERT Assert.IsType <PageResult>(result); }