public async Task ThrowException_WhenLikeDoesntExist()
        {
            var options = TestUtils.GetOptions(nameof(ThrowException_WhenLikeDoesntExist));

            var bar = new Bar {
                Id = "2"
            };
            var user = new AppUser {
                Id = "1"
            };
            var review1 = new BarReview {
                Id = "1", Rating = 6, Description = "0100101", BarId = "2"
            };
            //var review2 = new BarReview { Id = "2", Rating = 10, Description = "0100101", BarId = "2" };
            var like1 = new BarReviewLike {
                Id = "1", BarReviewID = "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(bar);
                arrangeContext.Add(user);
                arrangeContext.Add(review1);
                //arrangeContext.Add(review2);
                //arrangeContext.Add(like1);
                await arrangeContext.SaveChangesAsync();

                var ex = await Assert.ThrowsExceptionAsync <MagicException>(
                    async() => await sut.RemoveBarReviewLike(review1.Id, user.Id)
                    );
            }
        }
        public async Task RemoveLikeBarReview_WhenValidBarIdIsPassed()
        {
            var options = TestUtils.GetOptions(nameof(RemoveLikeBarReview_WhenValidBarIdIsPassed));
            var bar     = new Bar {
                Id = "2"
            };
            var user = new AppUser {
                Id = "1"
            };
            var review1 = new BarReview {
                Id = "1", Rating = 6, Description = "0100101", BarId = "2"
            };
            var review2 = new BarReview {
                Id = "2", Rating = 10, Description = "0100101", BarId = "2"
            };
            var like1 = new BarReviewLike {
                Id = "1", BarReviewID = "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(bar);
                arrangeContext.Add(user);
                arrangeContext.Add(review1);
                arrangeContext.Add(like1);
                await arrangeContext.SaveChangesAsync();

                Assert.AreEqual(1, arrangeContext.BarReviewLikes.Count());
                await sut.RemoveBarReviewLike(review1.Id, user.Id);

                Assert.AreEqual(0, arrangeContext.BarReviewLikes.Count());
            }
        }
        public static BarReviewLikeDTO BarMapReviewLikeDTO(this BarReviewLike barReviewLike)
        {
            var barReviewLikeDTO = new BarReviewLikeDTO();
            barReviewLikeDTO.BarReviewId = barReviewLike.BarReviewId;
            barReviewLikeDTO.BarReview = barReviewLike.BarReview;
            barReviewLikeDTO.UserId = barReviewLike.UserId;
            barReviewLikeDTO.User = barReviewLike.User;
            barReviewLikeDTO.IsLiked = barReviewLike.IsLiked;
            barReviewLikeDTO.IsInappropriate = barReviewLike.IsInappropriate;


            return barReviewLikeDTO;

        }
        public async Task GetCorrectCountOfLikes_WhenValidParamethersArePassed()
        {
            var options = TestUtils.GetOptions(nameof(GetCorrectCountOfLikes_WhenValidParamethersArePassed));

            var bar = new Bar {
                Id = "2"
            };
            var user = new AppUser {
                Id = "1"
            };
            var user2 = new AppUser {
                Id = "2"
            };
            var review1 = new BarReview {
                Id = "1", Rating = 6, Description = "0100101", BarId = "2"
            };
            //var review2 = new BarReview { Id = "2", Rating = 10, Description = "0100101", BarId = "2" };
            var like1 = new BarReviewLike {
                Id = "1", BarReviewID = "1", AppUserID = "1"
            };
            var like2 = new BarReviewLike {
                Id = "2", BarReviewID = "1", AppUserID = "2"
            };

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

                await sut.LikeBarReview(bar.Id, user.Id);

                var result = await sut.LikeBarReview(bar.Id, user2.Id);

                Assert.AreEqual(2, result);
            }
        }
Ejemplo n.º 5
0
        //Tested
        public async Task <int> LikeBarReview(string barReviewID, string userId)
        {
            barReviewID.ValidateIfNull(ExceptionMessages.IdNull);
            userId.ValidateIfNull(ExceptionMessages.IdNull);
            if (await _context.BarReviewLikes.AnyAsync(l => l.AppUserID == userId && l.BarReviewID == barReviewID))
            {
                throw new MagicException(ExceptionMessages.ReviewIsLiked);
            }
            var like = new BarReviewLike()
            {
                AppUserID   = userId,
                BarReviewID = barReviewID,
                Date        = DateTime.Now.Date
            };

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

            int count = await _context.BarReviewLikes.Where(r => r.BarReviewID == barReviewID).CountAsync();

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

            var bar = new Bar {
                Id = "2"
            };
            var user = new AppUser {
                Id = "1"
            };
            var review1 = new BarReview {
                Id = "1", Rating = 6, Description = "0100101", BarId = "2"
            };
            //var review2 = new BarReview { Id = "2", Rating = 10, Description = "0100101", BarId = "2" };
            var like1 = new BarReviewLike {
                Id = "1", BarReviewID = "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(bar);
                arrangeContext.Add(user);
                arrangeContext.Add(review1);
                //arrangeContext.Add(review2);
                arrangeContext.Add(like1);
                await arrangeContext.SaveChangesAsync();

                await sut.LikeBarReview(bar.Id, user.Id);

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

                Assert.AreEqual(ExceptionMessages.ReviewIsLiked, ex.Message);
            }
        }
        public async Task <bool> AddBarReviewLikeAsync(Guid reviewId, Guid userId)
        {
            var reviewExists = await _cmContext.BarReviews.AnyAsync(br => br.Id == reviewId && br.DeletedOn == null);

            if (!reviewExists)
            {
                throw new ArgumentNullException("Review does not exist or it is deleted.");
            }
            var barReviewLike = await _cmContext.BarReviewLikes
                                .Where(brl => brl.BarReviewId == reviewId && brl.UserId == userId)
                                .FirstOrDefaultAsync();

            if (barReviewLike != null)
            {
                barReviewLike.IsLiked = true;
            }
            else
            {
                var barReviewLikeNew = new BarReviewLike()
                {
                    BarReviewId = reviewId,
                    UserId      = userId,
                    IsLiked     = true
                };
                _cmContext.BarReviewLikes.Add(barReviewLikeNew);
            }
            try
            {
                await _cmContext.SaveChangesAsync();
            }
            catch (Exception)
            {
                throw;
            }

            return(true);
        }