public void TestCreateProductRating_ShouldFactoryCreateCorrectly(int rating,
                                                                         string content,
                                                                         int productId,
                                                                         string userId)
        {
            var mockedUser = new Mock <User>();

            var mockedUserRepository = new Mock <IRepository <User> >();

            mockedUserRepository.Setup(x => x.GetById(It.IsAny <string>())).Returns(mockedUser.Object);

            var mockedProduct = new Mock <Product>();

            var mockedProductRepository = new Mock <IRepository <Product> >();

            mockedProductRepository.Setup(x => x.GetById(It.IsAny <int>())).Returns(mockedProduct.Object);

            var mockedProductRatingRepository = new Mock <IRepository <ProductRating> >();
            var mockedFactory    = new Mock <IProductRatingFactory>();
            var mockedUnitOfWork = new Mock <IUnitOfWork>();

            var service = new ProductRatingService(mockedUserRepository.Object,
                                                   mockedProductRepository.Object,
                                                   mockedProductRatingRepository.Object,
                                                   mockedUnitOfWork.Object,
                                                   mockedFactory.Object);

            service.CreateProductRating(rating, content, productId, userId);

            mockedFactory.Verify(x => x.CreateProductRating(rating, content, mockedProduct.Object, mockedUser.Object));
        }
        public void TestCreateProductRating_ShouldCallUserRepositoryGetByIdCorrectly(int rating,
                                                                                     string content,
                                                                                     int productId,
                                                                                     string userId)
        {
            var mockedUserRepository          = new Mock <IRepository <User> >();
            var mockedProductRepository       = new Mock <IRepository <Product> >();
            var mockedProductRatingRepository = new Mock <IRepository <ProductRating> >();
            var mockedFactory    = new Mock <IProductRatingFactory>();
            var mockedUnitOfWork = new Mock <IUnitOfWork>();

            var service = new ProductRatingService(mockedUserRepository.Object,
                                                   mockedProductRepository.Object,
                                                   mockedProductRatingRepository.Object,
                                                   mockedUnitOfWork.Object,
                                                   mockedFactory.Object);

            service.CreateProductRating(rating, content, productId, userId);

            mockedUserRepository.Verify(x => x.GetById(userId), Times.Once);
        }