예제 #1
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);
            }
        }