public void AddFavoriteProduct_WithExistentSameFavoriteProduct_ShouldReturnFalse()
        {
            string errorMessagePrefix = "FavoriteProductsService AddFavoriteProduct() method does not work properly.";

            var context = UniShopDbContextInMemoryFactory.InitializeContext();

            this.SeedData(context);
            this.favoriteProductsService = new FavoriteProductsService(context, new UniShopUsersService(context));

            UniShopUser user      = context.Users.First();
            int         productId = context.Products.First().Id;

            UniShopUserFavoriteProduct testFavoriteProduct = new UniShopUserFavoriteProduct
            {
                UniShopUserId = user.Id,
                ProductId     = productId
            };

            context.Add(testFavoriteProduct);
            context.SaveChanges();

            int expectedCount = user.FavoriteProducts.Count();

            bool actualResult = this.favoriteProductsService.AddFavoriteProduct(productId, user.UserName);
            int  actualCount  = user.FavoriteProducts.Count();

            Assert.False(actualResult, errorMessagePrefix);
            Assert.Equal(expectedCount, actualCount);
        }
        public bool AddFavoriteProduct(int productId, string username)
        {
            var user = this.uniShopUsersService.GetUserByUsername(username);

            var isFavoriteProductExist = this.context.UniShopFavoriteProducts.Any(p => p.ProductId == productId);
            var isProductExist         = this.context.Products.Any(p => p.Id == productId);

            if (user == null || isFavoriteProductExist || !isProductExist)
            {
                return(false);
            }

            var favoriteProduct = new UniShopUserFavoriteProduct
            {
                ProductId     = productId,
                UniShopUserId = user.Id
            };

            this.context.UniShopFavoriteProducts.Add(favoriteProduct);
            int result = this.context.SaveChanges();

            return(result > 0);
        }