예제 #1
0
        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();
        }
예제 #3
0
        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);
            }
        }
예제 #4
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);
            }
        }
예제 #5
0
        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");
            }
        }