public async Task GetHiddenReviewsForProductIdandUserId_ShouldNotFound()
        {
            var mock = new Mock <IReviewService>(MockBehavior.Strict);

            mock.Setup(repo => repo.GetReviewListAsync(10, 10, true, false)).ReturnsAsync(null as List <ReviewDto>).Verifiable();
            var controller = new ReviewController(mock.Object);

            var result = await controller.GetHiddenReviewListAsync(10, 10);

            Assert.IsNotNull(result);

            var controllerResult = result as NotFoundResult;

            Assert.IsNotNull(controllerResult);

            mock.Verify();
            mock.Verify(repo => repo.GetReviewListAsync(10, 10, true, false), Times.Once);
        }
        public async Task GetHiddenReviewsForProductIdandUserId_ShouldOk()
        {
            List <ReviewDto> testReviewDtos = new List <ReviewDto>
            {
                new ReviewDto {
                    reviewId = 5, productId = 5, userId = 4, userName = "******", reviewRating = 1, reviewContent = "Just no", hidden = true
                }
            };

            var mock = new Mock <IReviewService>(MockBehavior.Strict);

            mock.Setup(repo => repo.GetReviewListAsync(5, 4, true, false)).ReturnsAsync(testReviewDtos).Verifiable();
            var controller = new ReviewController(mock.Object);

            var result = await controller.GetHiddenReviewListAsync(5, 4);

            Assert.IsNotNull(result);

            var controllerResult = result as OkObjectResult;

            Assert.IsNotNull(controllerResult);

            var reviewsResult = controllerResult.Value as IEnumerable <ReviewDto>;

            Assert.IsNotNull(reviewsResult);
            Assert.IsTrue(reviewsResult.All(r => r.userId == 4 && r.productId == 5));

            var reviewsList = reviewsResult.ToList();

            Assert.AreEqual(testReviewDtos.Count, reviewsList.Count);

            for (int i = 0; i < testReviewDtos.Count; ++i)
            {
                Assert.AreEqual(testReviewDtos[i].reviewId, reviewsList[i].reviewId);
                Assert.AreEqual(testReviewDtos[i].productId, reviewsList[i].productId);
                Assert.AreEqual(testReviewDtos[i].userId, reviewsList[i].userId);
                Assert.AreEqual(testReviewDtos[i].userName, reviewsList[i].userName);
                Assert.AreEqual(testReviewDtos[i].reviewRating, reviewsList[i].reviewRating);
            }

            mock.Verify();
            mock.Verify(repo => repo.GetReviewListAsync(5, 4, true, false), Times.Once);
        }