public static CocktailReviewLikeDTO CocktailReviewLikeMapToDTO(this CocktailReviewLike cocktailReviewLike)
        {
            var cocktailReviewLikeDTO = new CocktailReviewLikeDTO();

            cocktailReviewLikeDTO.CocktailReviewId = cocktailReviewLike.CocktailReviewId;
            //cocktailReviewLikeDTO.CocktailReview = cocktailReviewLike.CocktailReview;
            cocktailReviewLikeDTO.UserId = cocktailReviewLike.UserId;
            //cocktailReviewLikeDTO.User = cocktailReviewLike.User;
            cocktailReviewLikeDTO.IsLiked = cocktailReviewLike.IsLiked;
            //cocktailReviewLikeDTO.IsInappropriate = cocktailReviewLike.IsInappropriate;
            return(cocktailReviewLikeDTO);
        }
        public async Task <CocktailReviewLikeDTO> AddCocktailReviewLike(Guid cocktailReviewId, string userName)
        {
            var cReview = await _cmContext.CocktailReviews
                          .FirstOrDefaultAsync(cr => cr.Id == cocktailReviewId);

            if (cReview == null)
            {
                throw new ArgumentNullException("Cocktail review not found!");
            }

            var user = await _cmContext.Users
                       .FirstOrDefaultAsync(u => u.UserName == userName);

            if (user == null)
            {
                throw new ArgumentNullException("User not found!");
            }

            var cocktailReviewLike = await _cmContext.CocktailReviewLikes
                                     .FirstOrDefaultAsync(cr => cr.CocktailReviewId == cocktailReviewId && cr.UserId == user.Id);

            if (cocktailReviewLike == null)
            {
                var cocktailReviewLikeNew = new CocktailReviewLike
                {
                    CocktailReviewId = cReview.Id,
                    UserId           = user.Id,
                    IsLiked          = true
                };
                try
                {
                    await _cmContext.CocktailReviewLikes.AddAsync(cocktailReviewLikeNew);

                    await _cmContext.SaveChangesAsync();

                    var cocktailReviewLikeNewDTO = cocktailReviewLikeNew.CocktailReviewLikeMapToDTO();
                    return(cocktailReviewLikeNewDTO);
                }
                catch (Exception)
                {
                    throw new InvalidOperationException("Cannot add into database!");
                }
            }
            else
            {
                cocktailReviewLike.IsLiked = true;
                await _cmContext.SaveChangesAsync();
            }

            var cocktailReviewLikeDTO = cocktailReviewLike.CocktailReviewLikeMapToDTO();

            return(cocktailReviewLikeDTO);
        }
        public async Task GetCorrectCountCocktailReviewLikes_WhenValidParamethersArePassed()
        {
            var options = TestUtils.GetOptions(nameof(GetCorrectCountCocktailReviewLikes_WhenValidParamethersArePassed));

            var cocktail = new Cocktail {
                Id = "2"
            };
            var user = new AppUser {
                Id = "1"
            };
            var user2 = new AppUser {
                Id = "2"
            };
            var review1 = new CocktailReview {
                Id = "1", Rating = 6, Description = "0100101", UserId = user.Id, CocktailId = "2"
            };
            var review2 = new CocktailReview {
                Id = "2", Rating = 10, Description = "0100101", UserId = user.Id, CocktailId = "2"
            };
            var like1 = new CocktailReviewLike {
                Id = "1", CocktailReviewID = "1", AppUserID = "1"
            };
            var like2 = new CocktailReviewLike {
                Id = "2", CocktailReviewID = "1", AppUserID = "1"
            };

            using (var arrangeContext = new CMContext(options))
            {
                var sut = new ReviewServices(arrangeContext);
                arrangeContext.Add(cocktail);
                arrangeContext.Add(user);
                arrangeContext.Add(review1);
                arrangeContext.Add(review2);
                arrangeContext.Add(like1);
                arrangeContext.Add(like2);
                await arrangeContext.SaveChangesAsync();

                var result = await sut.LikeCocktailReview("1", user2.Id);

                Assert.AreEqual(3, result);
            }
        }
        public async Task ReturnCorrectCountOfCocktailLikes_WhenLikeIsRemoved()
        {
            var options = TestUtils.GetOptions(nameof(ReturnCorrectCountOfCocktailLikes_WhenLikeIsRemoved));


            var cocktail = new Cocktail {
                Id = "2"
            };
            var user = new AppUser {
                Id = "1"
            };
            var review1 = new CocktailReview {
                Id = "1", Rating = 6, Description = "0100101", CocktailId = "2"
            };
            var review2 = new CocktailReview {
                Id = "2", Rating = 10, Description = "0100101", CocktailId = "2"
            };
            var like1 = new CocktailReviewLike {
                Id = "1", CocktailReviewID = "1", AppUserID = "1"
            };
            var like2 = new CocktailReviewLike {
                Id = "2", CocktailReviewID = "1", AppUserID = "2"
            };

            using (var arrangeContext = new CMContext(options))
            {
                var sut = new ReviewServices(arrangeContext);
                arrangeContext.Add(cocktail);
                arrangeContext.Add(user);
                arrangeContext.Add(review1);
                arrangeContext.Add(like1);
                arrangeContext.Add(like2);
                await arrangeContext.SaveChangesAsync();

                Assert.AreEqual(2, arrangeContext.CocktailReviewLikes.Count());
                var result = await sut.RemoveCocktailReviewLike(review1.Id, user.Id);

                Assert.AreEqual(1, result);
            }
        }
        public async Task ThrowCorrectMessageException_WhenUserCocktailLikeExists()
        {
            var options = TestUtils.GetOptions(nameof(ThrowCorrectMessageException_WhenUserCocktailLikeExists));

            var cocktail = new Cocktail {
                Id = "2"
            };
            var user = new AppUser {
                Id = "1"
            };
            var review1 = new CocktailReview {
                Id = "1", Rating = 6, Description = "0100101", UserId = user.Id, CocktailId = "2"
            };
            var review2 = new CocktailReview {
                Id = "2", Rating = 10, Description = "0100101", UserId = user.Id, CocktailId = "2"
            };
            var like1 = new CocktailReviewLike {
                Id = "1", CocktailReviewID = "1", AppUserID = "1"
            };

            //var like2 = new BarReviewLike { Id = "2", BarReviewID = "2", AppUserID="1" };
            using (var arrangeContext = new CMContext(options))
            {
                var sut = new ReviewServices(arrangeContext);
                arrangeContext.Add(cocktail);
                arrangeContext.Add(user);
                arrangeContext.Add(review1);
                arrangeContext.Add(review2);
                arrangeContext.Add(like1);
                await arrangeContext.SaveChangesAsync();

                var ex = await Assert.ThrowsExceptionAsync <MagicException>(
                    async() => await sut.LikeCocktailReview(review1.Id, user.Id)
                    );

                Assert.AreEqual(ExceptionMessages.ReviewIsLiked, ex.Message);
            }
        }
Beispiel #6
0
        //Tested
        public async Task <int> LikeCocktailReview(string cocktailReviewID, string userId)
        {
            cocktailReviewID.ValidateIfNull(ExceptionMessages.IdNull);
            userId.ValidateIfNull(ExceptionMessages.IdNull);
            if (await _context.CocktailReviewLikes.AnyAsync(l => l.AppUserID == userId && l.CocktailReviewID == cocktailReviewID))
            {
                throw new MagicException(ExceptionMessages.ReviewIsLiked);
            }
            var like = new CocktailReviewLike()
            {
                AppUserID        = userId,
                CocktailReviewID = cocktailReviewID,
                Date             = DateTime.Now.Date
            };

            _context.CocktailReviewLikes.Add(like);
            await _context.SaveChangesAsync();

            int count = await _context.CocktailReviewLikes
                        .Where(r => r.CocktailReviewID == cocktailReviewID).CountAsync();

            return(count);
        }
        public async Task RemoveLikeCocktailReview_WhenValidBarIdIsPassed()
        {
            var options  = TestUtils.GetOptions(nameof(RemoveLikeCocktailReview_WhenValidBarIdIsPassed));
            var cocktail = new Cocktail {
                Id = "2"
            };
            var user = new AppUser {
                Id = "1"
            };
            var review1 = new CocktailReview {
                Id = "1", Rating = 6, Description = "0100101", CocktailId = "2"
            };
            var review2 = new CocktailReview {
                Id = "2", Rating = 10, Description = "0100101", CocktailId = "2"
            };
            var like1 = new CocktailReviewLike {
                Id = "1", AppUserID = "1", CocktailReviewID = review1.Id
            };

            //var like2 = new BarReviewLike { Id = "2", BarReviewID = "2", AppUserID="1" };

            using (var arrangeContext = new CMContext(options))
            {
                var sut = new ReviewServices(arrangeContext);
                arrangeContext.Add(cocktail);
                arrangeContext.Add(user);
                arrangeContext.Add(review1);
                arrangeContext.Add(like1);
                await arrangeContext.SaveChangesAsync();

                Assert.AreEqual(1, arrangeContext.CocktailReviewLikes.Count());
                await sut.RemoveCocktailReviewLike(review1.Id, user.Id);

                Assert.AreEqual(0, arrangeContext.CocktailReviewLikes.Count());
            }
        }
        public async Task Get_Correct_Number_CRL()
        {
            var options = Utils.GetOptions(nameof(Get_Correct_Number_CRL));

            var cocktail = new Cocktail()
            {
                Id          = Guid.Parse("8a15e590-0b66-4fae-abfa-d75812b76da6"),
                Name        = "White Russian",
                Description = "The White Russian is decadent and sophisticated."
            };

            var  hasher = new PasswordHasher <User>();
            User user1  = new User
            {
                Id                 = Guid.Parse("a137730d-bb81-4611-8fb8-bb777aae86ac"),
                UserName           = "******",
                NormalizedUserName = "******",
                FirstName          = "Boyan",
                LastName           = "Vuchev",
                Email              = "*****@*****.**",
                NormalizedEmail    = "*****@*****.**",
                LockoutEnabled     = true,
                SecurityStamp      = "DC6E275DD1E24957A7781D42BB68293B",
            };

            user1.PasswordHash = hasher.HashPassword(user1, "123456");

            User user2 = new User
            {
                Id                 = Guid.Parse("ad513447-0536-432b-a848-ea96ade0040d"),
                UserName           = "******",
                NormalizedUserName = "******",
                FirstName          = "Radoslav",
                LastName           = "Simeonov",
                Email              = "*****@*****.**",
                NormalizedEmail    = "*****@*****.**",
                LockoutEnabled     = true,
                SecurityStamp      = "HNWQ7GQFUMWKGOAWSJNC5XV2VFYQRWHC",
            };

            user2.PasswordHash = hasher.HashPassword(user2, "123456");

            var cReview = new CocktailReview()
            {
                Id         = Guid.Parse("d7047a3a-7b5e-4eb5-8ed2-c846b7a4d5ce"),
                CocktailId = cocktail.Id,
                UserId     = user1.Id,
                Rating     = 1,
                Comment    = "Too sour",
                ReviewedOn = DateTime.UtcNow
            };

            var cReview2 = new CocktailReview()
            {
                Id         = Guid.Parse("11c58b41-f0db-480d-bbe5-115bc027f868"),
                CocktailId = cocktail.Id,
                UserId     = user2.Id,
                Rating     = 5,
                Comment    = "Great",
                ReviewedOn = DateTime.UtcNow
            };


            var cReviewLike = new CocktailReviewLike()
            {
                CocktailReviewId = cReview.Id,
                UserId           = user2.Id,
                IsLiked          = true
            };

            var cReviewLike2 = new CocktailReviewLike()
            {
                CocktailReviewId = cReview2.Id,
                UserId           = user2.Id,
                IsLiked          = true
            };

            var cReviewLike3 = new CocktailReviewLike()
            {
                CocktailReviewId = cReview2.Id,
                UserId           = user1.Id,
                IsLiked          = true
            };

            using (var arrangeContext = new CMContext(options))
            {
                arrangeContext.Cocktails.Add(cocktail);
                arrangeContext.Users.Add(user1);
                arrangeContext.Users.Add(user2);
                arrangeContext.CocktailReviews.Add(cReview);
                arrangeContext.CocktailReviews.Add(cReview2);
                arrangeContext.CocktailReviewLikes.Add(cReviewLike);
                arrangeContext.CocktailReviewLikes.Add(cReviewLike2);
                arrangeContext.CocktailReviewLikes.Add(cReviewLike3);

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new CMContext(options))
            {
                var sut    = new CocktailReviewLikeService(assertContext);
                var result = await sut.GetAllSpecificCocktailReviewLikes(cocktail.Id);

                Assert.AreEqual(3, result.Count());
            }
        }
Beispiel #9
0
        public async Task Change_Cocktail_Review_Like_True()
        {
            var options = Utils.GetOptions(nameof(Change_Cocktail_Review_Like_True));

            var cocktail = new Cocktail()
            {
                Id = Guid.Parse("74d3f564-5811-4eda-97d6-e39d6bbd35a9"),
                Name = "Cosmopolitan",
                Description = "The legendary Cosmopolitan is a simple cocktail with a big history."
            };

            var hasher = new PasswordHasher<User>();
            var user = new User
            {
                Id = Guid.Parse("a137730d-bb81-4611-8fb8-bb777aae86ac"),
                UserName = "******",
                NormalizedUserName = "******",
                FirstName = "Boyan",
                LastName = "Vuchev",
                Email = "*****@*****.**",
                NormalizedEmail = "*****@*****.**",
                LockoutEnabled = true,
                SecurityStamp = "DC6E275DD1E24957A7781D42BB68293B",
            };
            user.PasswordHash = hasher.HashPassword(user, "123456");


            var cReview = new CocktailReview()
            {
                Id = Guid.Parse("d7047a3a-7b5e-4eb5-8ed2-c846b7a4d5ce"),
                CocktailId = cocktail.Id,
                UserId = user.Id,
                Rating = 1,
                Comment = "Too sour",
                ReviewedOn = DateTime.UtcNow
            };

            var cReviewLike = new CocktailReviewLike
            {
                UserId = user.Id,
                CocktailReviewId = cReview.Id,
                IsLiked = false
            };

            using (var arrangeContext = new CMContext(options))
            {
                var sut = new CocktailReviewLikeService(arrangeContext);

                arrangeContext.Cocktails.Add(cocktail);
                arrangeContext.Users.Add(user);
                arrangeContext.CocktailReviews.Add(cReview);
                arrangeContext.CocktailReviewLikes.Add(cReviewLike);
                await arrangeContext.SaveChangesAsync();

                await sut.AddCocktailReviewLike(cReview.Id, user.UserName);
            }

            using (var assertContext = new CMContext(options))
            {
                Assert.AreEqual(cReview.Id, assertContext.CocktailReviewLikes.First().CocktailReviewId);
                Assert.AreEqual(user.Id, assertContext.CocktailReviewLikes.First().UserId);
                Assert.AreEqual(true, assertContext.CocktailReviewLikes.First().IsLiked);
            }
        }