public void CallPublicationFactory_CreatePublicationOnce()
        {
            // Arrange
            var mockedPublicationRepository = new Mock <IEFRepository <Publication> >();
            var mockedFriendsService        = new Mock <IFriendService>();
            var mockedUserService           = new Mock <IUserService>();
            var user = new CustomUser()
            {
                Id = 1
            };

            mockedUserService.Setup(x => x.GetByIndentityId(It.IsAny <string>())).Returns(user);
            var mockedUnitOfWork         = new Mock <IUnitOfWork>();
            var mockedPublicationFactory = new Mock <IPublicationFactory>();
            var mockedDateTimeService    = new Mock <IDateTimeService>();
            var date = new DateTime(2004, 5, 20);

            mockedDateTimeService.Setup(x => x.GetCurrentDate()).Returns(date);
            var mockedPublicationImageFactory = new Mock <IPublicationImageFactory>();
            var image = new PublicationImage();

            mockedPublicationImageFactory.Setup(x => x.CreatePublicationImage(It.IsAny <byte[]>())).Returns(image);
            var mockedCommentService = new Mock <ICommentService>();

            var publicationService = new PublicationService(
                mockedPublicationRepository.Object,
                mockedFriendsService.Object,
                mockedUserService.Object,
                mockedUnitOfWork.Object,
                mockedPublicationFactory.Object,
                mockedDateTimeService.Object,
                mockedPublicationImageFactory.Object,
                mockedCommentService.Object);
            string content = "some content";
            string userId  = "some-id";

            byte[] imageContent = new byte[] { 12, 43, 65, 12, 1, 45 };

            // Act
            publicationService.CreatePublication(content, userId, imageContent);

            // Assert
            mockedPublicationFactory
            .Verify(
                x => x.CreatePublication(
                    It.Is <string>(c => c == content),
                    It.Is <int>(i => i == user.Id),
                    It.Is <DateTime>(d => d == date),
                    It.Is <PublicationImage>(p => p == image)),
                Times.Once);
        }
        public void CallPublicationRepository_AddOnce()
        {
            // Arrange
            var mockedPublicationRepository = new Mock <IEFRepository <Publication> >();
            var mockedFriendsService        = new Mock <IFriendService>();
            var mockedUserService           = new Mock <IUserService>();
            var user = new CustomUser()
            {
                Id = 1
            };

            mockedUserService.Setup(x => x.GetByIndentityId(It.IsAny <string>())).Returns(user);
            var mockedUnitOfWork         = new Mock <IUnitOfWork>();
            var mockedPublicationFactory = new Mock <IPublicationFactory>();
            var publication = new Publication();

            mockedPublicationFactory
            .Setup(
                x => x.CreatePublication(
                    It.IsAny <string>(),
                    It.IsAny <int>(),
                    It.IsAny <DateTime>(),
                    It.IsAny <PublicationImage>())).Returns(publication);
            var mockedDateTimeService         = new Mock <IDateTimeService>();
            var mockedPublicationImageFactory = new Mock <IPublicationImageFactory>();
            var mockedCommentService          = new Mock <ICommentService>();

            var publicationService = new PublicationService(
                mockedPublicationRepository.Object,
                mockedFriendsService.Object,
                mockedUserService.Object,
                mockedUnitOfWork.Object,
                mockedPublicationFactory.Object,
                mockedDateTimeService.Object,
                mockedPublicationImageFactory.Object,
                mockedCommentService.Object);
            string content = "some content";
            string userId  = "some-id";

            byte[] imageContent = new byte[] { 12, 43, 65, 12, 1, 45 };

            // Act
            publicationService.CreatePublication(content, userId, imageContent);

            // Assert
            mockedPublicationRepository.Verify(x => x.Add(It.Is <Publication>(p => p == publication)), Times.Once);
        }