public async Task AddAsync_AddPublication_Publication()
        {
            // Arrange
            var getablePublication    = new Mock <IGetablePublication>();
            var getableUser           = new Mock <IGetableUser>();
            var publicationRepository = new Mock <IRepositoryAsync <PublicationEntity> >();
            var imageRepositorySystem = new Mock <IImageRepositorySystemAsync>();

            var addPublication = new AddPublication(
                getablePublication.Object,
                getableUser.Object,
                publicationRepository.Object,
                imageRepositorySystem.Object);

            // Act
            var result = await addPublication.AddAsync(_publication);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(_publication, result);
            Assert.Equal(_publication.Id, result.Id);
        }
        public async Task AddAsync_AddInvalidPublication_ObjectAlreadyExistException()
        {
            // Arrange
            var getablePublication    = new Mock <IGetablePublication>();
            var getableUser           = new Mock <IGetableUser>();
            var publicationRepository = new Mock <IRepositoryAsync <PublicationEntity> >();
            var imageRepositorySystem = new Mock <IImageRepositorySystemAsync>();

            getablePublication.Setup(gp => gp.GetAll())
            .Returns(_publications);

            var addPublication = new AddPublication(
                getablePublication.Object,
                getableUser.Object,
                publicationRepository.Object,
                imageRepositorySystem.Object);


            Func <Task> act = async() => await addPublication.AddAsync(_publications.ElementAt(0));

            // Assert
            await Assert.ThrowsAsync <ObjectAlreadyExistException>(act);
        }