Exemplo n.º 1
0
        public async Task AddItemToCart_AddNewItem()
        {
            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 = 2
                };
                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
                await shoppingCartRepository.AddItemToCart(shoppingCart, mobilePhone.Id);

                var sc = await shoppingCartRepository.GetShoppingCart();

                //Assert
                sc.Should().BeOfType <ShoppingCart>();
                sc.Should().NotBeNull();
                sc.Items.Should().HaveCount(2);
                sc.Items.ToList()[0].Quantity.Should().Be(1);
                sc.Items.ToList()[1].Quantity.Should().Be(1);
            }
        }