public async Task RetriveShopppingCartTest() { //Arrange var sc = new ShoppingCart() { Id = "1" }; sc.Items = new List <ShoppingCartMobilePhone>(); var mobilePhone = new MobilePhone() { Id = 1 }; var item = new ShoppingCartMobilePhone() { MobilePhoneId = 1, MobilePhoneRef = mobilePhone }; sc.Items.Add(item); var repoMock = new Mock <IShoppingCartRepository>(); repoMock.Setup(sc => sc.GetShoppingCart()).ReturnsAsync(sc); var service = new ShoppingCartService(repoMock.Object); //Act var result = await service.RetriveShopppingCart(); //Assert result.Should().NotBeNull(); result.Should().BeOfType <ShoppingCartVM>(); result.Items.Should().HaveCount(1); }
public async Task AddItemToCart(ShoppingCart shoppingCart, int mobilePhoneId) { var cartItem = shoppingCart.Items .FirstOrDefault(i => i.MobilePhoneId == mobilePhoneId && shoppingCart.Id == i.ShoppingCartId); if (cartItem != null) { cartItem.Quantity++; } else { var item = await _context.MobilePhones .FirstOrDefaultAsync(m => m.Id == mobilePhoneId); var shoppingCartItem = new ShoppingCartMobilePhone() { ShoppingCartId = shoppingCart.Id, MobilePhoneId = item.Id, Quantity = 1 }; cartItem = shoppingCartItem; shoppingCart.Items.Add(cartItem); } _context.Update(shoppingCart); await _context.SaveChangesAsync(); }
public async Task RemoveItemFromCart_TwoDiffrentItemsRemoveBothOfThem() { var serviceProvider = BuildInMemoryDBProvider(); using (var dbContext = serviceProvider.GetService <DatabaseContext>()) { //Arrange var shoppingCart = new ShoppingCart() { Id = "1", Items = new List <ShoppingCartMobilePhone>() }; var item = new ShoppingCartMobilePhone() { MobilePhoneId = 1, ShoppingCartId = "1", Quantity = 1 }; var item2 = new ShoppingCartMobilePhone() { MobilePhoneId = 2, ShoppingCartId = "1", Quantity = 1 }; shoppingCart.Items.Add(item); shoppingCart.Items.Add(item2); var user = new ApplicationUser() { Id = "1", ShoppingCart = shoppingCart }; dbContext.Add(user); await dbContext.SaveChangesAsync(); var mockHttpContextAccessor = new Mock <IHttpContextAccessor>(); mockHttpContextAccessor.Object.HttpContext = new DefaultHttpContext(); var claims = new ClaimsPrincipal(); mockHttpContextAccessor.Setup(x => x.HttpContext.User).Returns(claims); List <ApplicationUser> _users = new List <ApplicationUser>(); var userManager = MockUserManager <ApplicationUser>(_users).Object; var shoppingCartRepository = new ShoppingCartRepository(dbContext, userManager, mockHttpContextAccessor.Object); //Act await shoppingCartRepository.RemoveItemFromCart(shoppingCart, 1); await shoppingCartRepository.RemoveItemFromCart(shoppingCart, 2); var sc = await shoppingCartRepository.GetShoppingCart(); //Assert sc.Should().BeOfType <ShoppingCart>(); sc.Should().NotBeNull(); sc.Items.Should().HaveCount(0); } }
public async Task CountTotal_OneItem() { var serviceProvider = BuildInMemoryDBProvider(); using (var dbContext = serviceProvider.GetService <DatabaseContext>()) { //Arrange var shoppingCart = new ShoppingCart() { Id = "1", Items = new List <ShoppingCartMobilePhone>() }; var user = new ApplicationUser() { Id = "1", ShoppingCart = shoppingCart }; var mobilePhone = new MobilePhone() { Id = 1, Price = 2000 }; var item = new ShoppingCartMobilePhone() { MobilePhoneId = 1, ShoppingCartId = "1", Quantity = 1 }; shoppingCart.Items.Add(item); dbContext.Add(mobilePhone); dbContext.Add(user); await dbContext.SaveChangesAsync(); var mockHttpContextAccessor = new Mock <IHttpContextAccessor>(); mockHttpContextAccessor.Object.HttpContext = new DefaultHttpContext(); var claims = new ClaimsPrincipal(); mockHttpContextAccessor.Setup(x => x.HttpContext.User).Returns(claims); List <ApplicationUser> _users = new List <ApplicationUser>(); var userManager = MockUserManager <ApplicationUser>(_users).Object; var shoppingCartRepository = new ShoppingCartRepository(dbContext, userManager, mockHttpContextAccessor.Object); //Act var result = await shoppingCartRepository.CountTotal(shoppingCart); var sc = await shoppingCartRepository.GetShoppingCart(); //Assert result.Should().Be(2000); sc.Should().BeOfType <ShoppingCart>(); sc.Should().NotBeNull(); sc.Items.Should().HaveCount(1); sc.Items.ToList()[0].Quantity.Should().Be(1); } }
public async Task AddOrder_Success() { var serviceProvider = BuildInMemoryDBProvider(); using (var dbContext = serviceProvider.GetService <DatabaseContext>()) { //Arrange var shoppingCart = new ShoppingCart() { Id = "1", Items = new List <ShoppingCartMobilePhone>() }; var item = new ShoppingCartMobilePhone() { MobilePhoneId = 1, ShoppingCartId = "1", Quantity = 1 }; shoppingCart.Items.Add(item); var user = new ApplicationUser() { Id = "1", ShoppingCart = shoppingCart }; dbContext.Add(user); await dbContext.SaveChangesAsync(); var shoppingCartVM = new ShoppingCartVM() { Items = shoppingCart.Items.ToList(), }; var mockHttpContextAccessor = new Mock <IHttpContextAccessor>(); mockHttpContextAccessor.Object.HttpContext = new DefaultHttpContext(); var claims = new ClaimsPrincipal(); mockHttpContextAccessor.Setup(x => x.HttpContext.User).Returns(claims); List <ApplicationUser> _users = new List <ApplicationUser>(); var userManager = MockUserManager <ApplicationUser>(_users).Object; var orderRepository = new OrderRepository(dbContext); //Act var result = await orderRepository.AddOrder(shoppingCartVM, user.Id, 1); //Assert dbContext.Orders .FirstOrDefaultAsync(o => o.Id == result) .Should() .NotBeNull(); result.Should().NotBe("-1"); } }