public async Task AddReviewAsyncAllReviewersAddedTheirReviewsWhileRatingIsLowSetAcceptedStatusAndSendEmail()
        {
            var       reviewerId       = 1u;
            var       reviewMsg        = _faker.Rant.Review();
            var       rating           = _faker.Random.Byte(1, 3);
            IFormFile reviewFile       = null;
            var       scientificWorkId = 2u;

            var version = new ScientificWorkFile()
            {
                Id      = 3,
                Reviews = new List <Review>()
            };

            var reviewer = new User()
            {
                Id = reviewerId
            };

            var reviewerCount = 3;
            var reviewsCount  = 3;

            var authorEmail = _faker.Internet.Email();

            var ratingSum = 9;

            var scientificWork = new ScientificWork()
            {
                Status = StatusEnum.UnderReview
            };

            _scientificWorkRepositoryMock.Setup(x => x.GetEmailOfAuthorByWorkIdAsync(scientificWorkId)).ReturnsAsync(authorEmail);
            _scientificWorkRepositoryMock.Setup(x => x.GetWorkByIdAsync(scientificWorkId)).ReturnsAsync(scientificWork);
            _scientificWorkRepositoryMock.Setup(x => x.ChangeStatusAsync(It.Is <ScientificWork>(y => y.Status == StatusEnum.Accepted)));

            _scientificWorkFileRepositoryMock.Setup(x => x.GetNewestVersionWithReviewsAsync(scientificWorkId)).ReturnsAsync(version);
            _scientificWorkFileRepositoryMock.Setup(x => x.GetReviewsCountInNewestVersion(scientificWorkId)).Returns(reviewsCount);
            _scientificWorkFileRepositoryMock.Setup(x => x.GetRatingSumFromVersion(version.Id)).ReturnsAsync(ratingSum);
            _scientificWorkFileRepositoryMock.Setup(x => x.AddRatingAsync(It.Is <ScientificWorkFile>(y => y.Rating == 3)));

            _userStoreMock.Setup(x => x.FindByIdAsync(reviewerId.ToString(), CancellationToken.None)).ReturnsAsync(reviewer);

            _reviewRepositoryMock.Setup(x => x.AddReviewAsync(It.Is <Review>(y => y.Reviewer == reviewer &&
                                                                             y.Rating == rating &&
                                                                             y.VersionOfScientificWork == version)));

            _reviewersWorkRepositoryMock.Setup(x => x.GetReviewersCount(scientificWorkId)).Returns(reviewerCount);
            _reviewersWorkRepositoryMock.Setup(x => x.IsReviewerOfScientificWorkAsync(reviewerId, scientificWorkId)).ReturnsAsync(true);

            _emailSenderMock.Setup(x => x.SendToAuthorWorkGotAcceptedAsync(authorEmail, scientificWorkId));

            var err = await Record.ExceptionAsync(async
                                                      () => await _service.AddReviewAsync(reviewerId, reviewMsg, reviewFile, rating, scientificWorkId));

            err.Should().BeNull();

            _emailSenderMock.Verify(x => x.SendToAuthorWorkGotAcceptedAsync(authorEmail, scientificWorkId), Times.Once);
            _scientificWorkFileRepositoryMock.Verify(x => x.AddRatingAsync(It.Is <ScientificWorkFile>(y => y.Rating == 3)), Times.Once);
            _scientificWorkRepositoryMock.Verify(x => x.ChangeStatusAsync(It.Is <ScientificWork>(y => y.Status == StatusEnum.Accepted)), Times.Once);
        }
        public async Task AddReviewAsyncWorkAlreadyHaveReviewFromThisUserDoNothing()
        {
            var reviewerId       = 1u;
            var scientificWorkId = 2u;
            var reviewMsg        = _faker.Rant.Review();
            var rating           = _faker.Random.Byte(1, 3);
            var reviewFile       = new FormFile(null, _faker.Random.Long(), _faker.Random.Long(), _faker.Internet.UserName(), _faker.System.FileName("pdf"));

            var scientificWork = new ScientificWorkFile()
            {
                Reviews = new List <Review>()
                {
                    new Review()
                    {
                        Reviewer = new User()
                        {
                            Id = reviewerId
                        }
                    }
                }
            };

            _reviewersWorkRepositoryMock.Setup(x => x.IsReviewerOfScientificWorkAsync(reviewerId, scientificWorkId)).ReturnsAsync(true);
            _scientificWorkFileRepositoryMock.Setup(x => x.GetNewestVersionWithReviewsAsync(scientificWorkId)).ReturnsAsync(scientificWork);

            var err = await Record.ExceptionAsync(async
                                                      () => await _service.AddReviewAsync(reviewerId, reviewMsg, reviewFile, rating, scientificWorkId));

            err.Should().BeNull();

            _reviewRepositoryMock.Verify(x => x.AddReviewAsync(It.IsAny <Review>()), Times.Never);
            _emailSenderMock.VerifyNoOtherCalls();
        }
Exemplo n.º 3
0
        public async Task GetStreamOfScientificWorkAsyncReturnStreamOfFile()
        {
            var scientificWorkId = 1u;

            var scientificFileWork = new ScientificWorkFile()
            {
                Id       = 1,
                FileName = _faker.System.FileName("pdf")
            };

            Stream returnedStream = null;

            var expectedWorkStream = new MemoryStream(Encoding.UTF8.GetBytes(_faker.Random.String(7)));

            _scientificWorkFileRepositoryMock.Setup(x => x.GetNewestVersionAsync(scientificFileWork.Id)).ReturnsAsync(scientificFileWork);
            _fileManagerMock.Setup(x => x.GetStreamOfFile(scientificFileWork.FileName)).Returns(expectedWorkStream);

            var err = await Record.ExceptionAsync(async
                                                      () => returnedStream = await _service.GetStreamOfScientificWorkAsync(scientificWorkId));

            err.Should().BeNull();
            returnedStream.Should().NotBeNull();
            returnedStream.Should().BeEquivalentTo(expectedWorkStream);

            _scientificWorkFileRepositoryMock.Verify(x => x.GetNewestVersionAsync(scientificWorkId), Times.Once);
        }
Exemplo n.º 4
0
        public async Task AddVersionAsyncAddNextVersionsSuccess()
        {
            uint userId = 1;
            var  file   = new FormFile(null, _faker.Random.Long(), _faker.Random.Long(), _faker.Internet.UserName(), _faker.System.FileName("pdf"));

            var randomNameOfFile = _faker.System.FileName("pdf");

            byte versionNumber = 1;

            var scientificWork = new ScientificWork()
            {
                Id          = 1,
                Name        = _faker.Commerce.ProductName(),
                Description = _faker.Commerce.ProductDescription(),
                Status      = StatusEnum.UnderReview
            };

            var newVersion = new ScientificWorkFile()
            {
                Version        = (byte)(versionNumber + 1),
                FileName       = randomNameOfFile,
                ScientificWork = scientificWork
            };

            var reviewerEmails = Enumerable.Range(1, 3).Select(_ => _faker.Internet.Email());

            _scientificWorkRepositoryMock.Setup(x => x.GetNumberOfVersionsByAuthorIdAsync(userId)).ReturnsAsync(versionNumber);
            _scientificWorkRepositoryMock.Setup(x => x.GetByAuthorIdAsync(userId)).ReturnsAsync(scientificWork);
            _scientificWorkRepositoryMock.Setup(x => x.ChangeStatusAsync(It.Is <ScientificWork>(y => y.Id == scientificWork.Id && y.Status == StatusEnum.UnderReview)));

            _reviewerScientificWorkRepositoryMock.Setup(x => x.GetEmailsOfReviewersByWorkIdAsync(scientificWork.Id)).ReturnsAsync(reviewerEmails);

            _scientificWorkFileRepositoryMock.Setup(x => x.AddAsync(It.Is <ScientificWorkFile>(y => y.Version == newVersion.Version &&
                                                                                               y.FileName == newVersion.FileName &&
                                                                                               y.ScientificWork == newVersion.ScientificWork)));

            _fileManagerMock.Setup(x => x.SaveFileAsync(file)).ReturnsAsync(randomNameOfFile);
            _emailSenderMock.Setup(x => x.SendAddedNewVersionEmailAsync(It.IsIn(reviewerEmails), scientificWork.Id));

            var err = await Record.ExceptionAsync(async
                                                      () => await _service.AddVersionAsync(userId, file));

            err.Should().BeNull();

            _scientificWorkRepositoryMock.Verify(x => x.ChangeStatusAsync(It.Is <ScientificWork>(x => x.Status == StatusEnum.UnderReview)), Times.Once);
            _scientificWorkRepositoryMock.Verify(x => x.GetNumberOfVersionsByAuthorIdAsync(userId), Times.Once);
            _scientificWorkFileRepositoryMock.Verify(x => x.AddAsync(It.Is <ScientificWorkFile>(y => y.Version == newVersion.Version &&
                                                                                                y.FileName == newVersion.FileName &&
                                                                                                y.ScientificWork == newVersion.ScientificWork)), Times.Once);

            _emailSenderMock.Verify(x => x.SendAddedNewVersionEmailAsync(It.IsAny <string>(), scientificWork.Id), Times.Exactly(reviewerEmails.Count()));
        }
        public async Task AddReviewAsyncAddReviewIsNotTheLastSaveReviewFile()
        {
            var reviewerId       = 1u;
            var scientificWorkId = 2u;

            var       reviewMsg      = _faker.Rant.Review();
            var       rating         = _faker.Random.Byte(1, 3);
            var       authorEmail    = _faker.Internet.Email();
            var       randomFileName = _faker.System.FileName(".pdf");
            IFormFile reviewFile     = new FormFile(null, 0, 0, "", "");

            var version = new ScientificWorkFile()
            {
                Reviews = new List <Review>()
            };

            var reviewer = new User()
            {
                Id = reviewerId
            };

            var reviewerCount = 3;
            var reviewsCount  = 1;

            _scientificWorkFileRepositoryMock.Setup(x => x.GetNewestVersionWithReviewsAsync(scientificWorkId)).ReturnsAsync(version);
            _scientificWorkFileRepositoryMock.Setup(x => x.GetReviewsCountInNewestVersion(scientificWorkId)).Returns(reviewsCount);

            _userStoreMock.Setup(x => x.FindByIdAsync(reviewerId.ToString(), CancellationToken.None)).ReturnsAsync(reviewer);

            _fileManagerMock.Setup(x => x.SaveFileAsync(reviewFile)).ReturnsAsync(randomFileName);

            _reviewersWorkRepositoryMock.Setup(x => x.GetReviewersCount(scientificWorkId)).Returns(reviewerCount);
            _reviewersWorkRepositoryMock.Setup(x => x.IsReviewerOfScientificWorkAsync(reviewerId, scientificWorkId)).ReturnsAsync(true);

            _reviewRepositoryMock.Setup(x => x.AddReviewAsync(It.Is <Review>(y => y.Reviewer == reviewer &&
                                                                             y.Rating == rating &&
                                                                             y.File == randomFileName &&
                                                                             y.VersionOfScientificWork == version)));

            var err = await Record.ExceptionAsync(async
                                                      () => await _service.AddReviewAsync(reviewerId, reviewMsg, reviewFile, rating, scientificWorkId));

            err.Should().BeNull();

            _scientificWorkFileRepositoryMock.Verify(x => x.GetRatingSumFromVersion(It.IsAny <uint>()), Times.Never);
            _fileManagerMock.Verify(x => x.SaveFileAsync(reviewFile), Times.Once);
            _reviewRepositoryMock.Verify(x => x.AddReviewAsync(It.Is <Review>(y => y.Reviewer == reviewer &&
                                                                              y.Rating == rating &&
                                                                              y.File == randomFileName &&
                                                                              y.VersionOfScientificWork == version)), Times.Once);
        }
Exemplo n.º 6
0
        public async Task AddVersionAsyncAddFirstSuccess()
        {
            var userId = 1u;
            var file   = new FormFile(null, _faker.Random.Long(), _faker.Random.Long(), _faker.Internet.UserName(), _faker.System.FileName("pdf"));

            var randomNameOfFile = _faker.System.FileName("pdf");

            var scientificWork = new ScientificWork()
            {
                Id          = 1,
                Name        = _faker.Commerce.ProductName(),
                Description = _faker.Commerce.ProductDescription(),
                Status      = StatusEnum.WaitingForDrawOfReviewers
            };

            var newVersion = new ScientificWorkFile()
            {
                Version        = 1,
                FileName       = randomNameOfFile,
                ScientificWork = scientificWork
            };

            _scientificWorkRepositoryMock.Setup(x => x.GetByAuthorIdAsync(userId)).ReturnsAsync(scientificWork);
            _fileManagerMock.Setup(x => x.SaveFileAsync(file)).ReturnsAsync(randomNameOfFile);
            _scientificWorkFileRepositoryMock.Setup(x => x.AddAsync(It.Is <ScientificWorkFile>(y => y.Version == newVersion.Version &&
                                                                                               y.FileName == newVersion.FileName &&
                                                                                               y.ScientificWork == newVersion.ScientificWork)));

            var err = await Record.ExceptionAsync(async
                                                      () => await _service.AddVersionAsync(userId, file, true));

            err.Should().BeNull();

            _scientificWorkRepositoryMock.Verify(x => x.ChangeStatusAsync(It.IsAny <ScientificWork>()), Times.Never);
            _scientificWorkRepositoryMock.Verify(x => x.GetNumberOfVersionsByAuthorIdAsync(It.IsAny <uint>()), Times.Never);
            _emailSenderMock.Verify(x => x.SendAddedNewVersionEmailAsync(It.IsAny <string>(), It.IsAny <uint>()), Times.Never);
            _scientificWorkFileRepositoryMock.Verify(x => x.AddAsync(It.Is <ScientificWorkFile>(y => y.Version == newVersion.Version &&
                                                                                                y.FileName == newVersion.FileName &&
                                                                                                y.ScientificWork == newVersion.ScientificWork)), Times.Once);
        }
Exemplo n.º 7
0
        public async Task AddVersionAsync(uint userId, IFormFile workFile, bool isFirstVersion = false)
        {
            byte versionNumber = 1;

            if (!isFirstVersion)
            {
                versionNumber = await _scientificWorkRepository.GetNumberOfVersionsByAuthorIdAsync(userId);

                versionNumber++;
            }

            var scientificWork = await _scientificWorkRepository.GetByAuthorIdAsync(userId);

            var workName = await _fileManager.SaveFileAsync(workFile);

            var versionOfWork = new ScientificWorkFile()
            {
                Version        = versionNumber,
                FileName       = workName,
                DateAdd        = DateTime.Now,
                ScientificWork = scientificWork
            };

            await _scientificWorkFileRepository.AddAsync(versionOfWork);

            // change status when the work reviewed before
            if (!isFirstVersion)
            {
                scientificWork.Status = StatusEnum.UnderReview;
                await _scientificWorkRepository.ChangeStatusAsync(scientificWork);

                var emailsOfReviewers = await _reviewersWorkRepository.GetEmailsOfReviewersByWorkIdAsync(scientificWork.Id);

                foreach (var email in emailsOfReviewers)
                {
                    await _emailSender.SendAddedNewVersionEmailAsync(email, scientificWork.Id);
                }
            }
        }
Exemplo n.º 8
0
 public async Task AddRatingAsync(ScientificWorkFile scientificWorkFile)
 {
     _context.ScientificWorkFiles.Update(scientificWorkFile);
     await _context.SaveChangesAsync();
 }
Exemplo n.º 9
0
        public async Task AddAsync(ScientificWorkFile scientificWorkFile)
        {
            await _context.ScientificWorkFiles.AddAsync(scientificWorkFile);

            await _context.SaveChangesAsync();
        }
Exemplo n.º 10
0
        public async Task AddReviewAsyncAllReviewersAddedReviewSetAcceptedStatus()
        {
            var reviewerId       = 1u;
            var reviewMsg        = "This is my review!";
            var reviewFile       = new FormFile(null, 42534, 2345, "NameHaHa", "FileNameHueHue");
            var rating           = (byte)3;
            var scientificWorkId = 2u;

            var version = new ScientificWorkFile()
            {
                Id      = 3,
                Reviews = new List <Review>()
            };

            var reviewer = new User()
            {
                Id = reviewerId
            };

            var randomFileName = "afertgh35he.png";

            var reviewerCount = 3;
            var reviewsCount  = 3;

            var authorEmail = "*****@*****.**";

            var ratingSum = 9;

            var scientificWork = new ScientificWork()
            {
                Status = StatusEnum.UnderReview
            };

            _scientificWorkRepositoryMock.Reset();
            _scientificWorkRepositoryMock.Setup(x => x.IsReviewerOfScientificWorkAsync(reviewerId, scientificWorkId)).ReturnsAsync(true);
            _scientificWorkRepositoryMock.Setup(x => x.GetEmailOfAuthorByWorkIdAsync(scientificWorkId)).ReturnsAsync(authorEmail);
            _scientificWorkRepositoryMock.Setup(x => x.GetWorkByIdAsync(scientificWorkId)).ReturnsAsync(scientificWork);
            _scientificWorkRepositoryMock.Setup(x => x.ChangeStatusAsync(It.Is <ScientificWork>(y => y.Status == StatusEnum.Accepted)));

            _scientificWorkFileRepositoryMock.Reset();
            _scientificWorkFileRepositoryMock.Setup(x => x.GetNewestVersionWithReviewsAsync(scientificWorkId)).ReturnsAsync(version);
            _scientificWorkFileRepositoryMock.Setup(x => x.GetReviewsCountInNewestVersion(scientificWorkId)).Returns(reviewsCount);
            _scientificWorkFileRepositoryMock.Setup(x => x.GetRatingSumFromVersion(version.Id)).ReturnsAsync(ratingSum);
            _scientificWorkFileRepositoryMock.Setup(x => x.AddRatingAsync(It.Is <ScientificWorkFile>(y => y.Rating == 3)));

            _userStoreMock.Reset();
            _userStoreMock.Setup(x => x.FindByIdAsync(reviewerId.ToString(), CancellationToken.None)).ReturnsAsync(reviewer);

            _fileManagerMock.Reset();
            _fileManagerMock.Setup(x => x.SaveFileAsync(reviewFile)).ReturnsAsync(randomFileName);

            _reviewRepositoryMock.Reset();
            _reviewRepositoryMock.Setup(x => x.AddReviewAsync(It.Is <Review>(y => y.Reviewer == reviewer &&
                                                                             y.Rating == rating && y.File == randomFileName &&
                                                                             y.VersionOfScientificWork == version)));

            _reviewersWorkRepositoryMock.Reset();
            _reviewersWorkRepositoryMock.Setup(x => x.GetReviewersCount(scientificWorkId)).Returns(reviewerCount);

            _emailSenderMock.Reset();
            _emailSenderMock.Setup(x => x.SendToAuthorWorkGotAcceptedAsync(authorEmail, scientificWorkId));

            var err = await Record.ExceptionAsync(async
                                                      () => await _service.AddReviewAsync(reviewerId, reviewMsg, reviewFile, rating, scientificWorkId));

            err.Should().BeNull();

            _scientificWorkRepositoryMock.Verify(x => x.IsReviewerOfScientificWorkAsync(reviewerId, scientificWorkId), Times.Once);
            _scientificWorkRepositoryMock.Verify(x => x.GetEmailOfAuthorByWorkIdAsync(scientificWorkId), Times.Once);
            _scientificWorkRepositoryMock.Verify(x => x.GetWorkByIdAsync(scientificWorkId), Times.Once);
            _scientificWorkRepositoryMock.Verify(x => x.ChangeStatusAsync(It.Is <ScientificWork>(y => y.Status == StatusEnum.Accepted)), Times.Once);

            _scientificWorkFileRepositoryMock.Verify(x => x.GetNewestVersionWithReviewsAsync(scientificWorkId), Times.Once);
            _scientificWorkFileRepositoryMock.Verify(x => x.GetReviewsCountInNewestVersion(scientificWorkId), Times.Once);
            _scientificWorkFileRepositoryMock.Verify(x => x.GetRatingSumFromVersion(version.Id), Times.Once);
            _scientificWorkFileRepositoryMock.Verify(x => x.AddRatingAsync(It.Is <ScientificWorkFile>(y => y.Rating == 3)), Times.Once);

            _userStoreMock.Verify(x => x.FindByIdAsync(reviewerId.ToString(), CancellationToken.None), Times.Once);

            _fileManagerMock.Verify(x => x.SaveFileAsync(reviewFile), Times.Once);

            _reviewRepositoryMock.Verify(x => x.AddReviewAsync(It.Is <Review>(y => y.Reviewer == reviewer &&
                                                                              y.Rating == rating && y.File == randomFileName &&
                                                                              y.VersionOfScientificWork == version)), Times.Once);

            _reviewersWorkRepositoryMock.Verify(x => x.GetReviewersCount(scientificWorkId), Times.Once);

            _emailSenderMock.Verify(x => x.SendToAuthorWorkGotRejectedAsync(It.IsAny <string>(), It.IsAny <uint>()), Times.Never);
            _emailSenderMock.Verify(x => x.SendNewVersionEnabledEmailAsync(It.IsAny <string>(), It.IsAny <uint>()), Times.Never);
            _emailSenderMock.Verify(x => x.SendToAuthorWorkGotAcceptedAsync(authorEmail, scientificWorkId), Times.Once);
            _emailSenderMock.Verify(x => x.SendReceiveReviewEmailAsync(It.IsAny <string>(), It.IsAny <uint>()), Times.Never);
        }
Exemplo n.º 11
0
        public async Task AddReviewAsyncWorkAlreadyHaveReviewFromThisUserDoNothing()
        {
            var reviewerId       = 1u;
            var reviewMsg        = "This is my review!";
            var reviewFile       = new FormFile(null, 42534, 2345, "NameHaHa", "FileNameHueHue");
            var rating           = (byte)3;
            var scientificWorkId = 2u;

            var scientificWork = new ScientificWorkFile()
            {
                Reviews = new List <Review>()
                {
                    new Review()
                    {
                        Reviewer = new User()
                        {
                            Id = reviewerId
                        }
                    }
                }
            };

            _scientificWorkRepositoryMock.Reset();
            _scientificWorkRepositoryMock.Setup(x => x.IsReviewerOfScientificWorkAsync(reviewerId, scientificWorkId)).ReturnsAsync(true);

            _scientificWorkFileRepositoryMock.Reset();
            _scientificWorkFileRepositoryMock.Setup(x => x.GetNewestVersionWithReviewsAsync(scientificWorkId)).ReturnsAsync(scientificWork);

            _userStoreMock.Reset();
            _fileManagerMock.Reset();
            _reviewRepositoryMock.Reset();
            _emailSenderMock.Reset();
            _reviewersWorkRepositoryMock.Reset();

            var err = await Record.ExceptionAsync(async
                                                      () => await _service.AddReviewAsync(reviewerId, reviewMsg, reviewFile, rating, scientificWorkId));

            err.Should().BeNull();

            _scientificWorkRepositoryMock.Verify(x => x.IsReviewerOfScientificWorkAsync(reviewerId, scientificWorkId), Times.Once);
            _scientificWorkRepositoryMock.Verify(x => x.GetEmailOfAuthorByWorkIdAsync(It.IsAny <uint>()), Times.Never);
            _scientificWorkRepositoryMock.Verify(x => x.ChangeStatusAsync(It.IsAny <ScientificWork>()), Times.Never);
            _scientificWorkRepositoryMock.Verify(x => x.GetWorkByIdAsync(It.IsAny <uint>()), Times.Never);

            _scientificWorkFileRepositoryMock.Verify(x => x.GetNewestVersionWithReviewsAsync(scientificWorkId), Times.Once);
            _scientificWorkFileRepositoryMock.Verify(x => x.GetReviewsCountInNewestVersion(It.IsAny <uint>()), Times.Never);
            _scientificWorkFileRepositoryMock.Verify(x => x.GetRatingSumFromVersion(It.IsAny <uint>()), Times.Never);
            _scientificWorkFileRepositoryMock.Verify(x => x.AddRatingAsync(It.IsAny <ScientificWorkFile>()), Times.Never);

            _userStoreMock.Verify(x => x.FindByIdAsync(It.IsAny <string>(), CancellationToken.None), Times.Never);

            _fileManagerMock.Verify(x => x.SaveFileAsync(It.IsAny <IFormFile>()), Times.Never);

            _reviewRepositoryMock.Verify(x => x.AddReviewAsync(It.IsAny <Review>()), Times.Never);

            _reviewersWorkRepositoryMock.Verify(x => x.GetReviewersCount(It.IsAny <uint>()), Times.Never);

            _emailSenderMock.Verify(x => x.SendToAuthorWorkGotRejectedAsync(It.IsAny <string>(), It.IsAny <uint>()), Times.Never);
            _emailSenderMock.Verify(x => x.SendNewVersionEnabledEmailAsync(It.IsAny <string>(), It.IsAny <uint>()), Times.Never);
            _emailSenderMock.Verify(x => x.SendToAuthorWorkGotAcceptedAsync(It.IsAny <string>(), It.IsAny <uint>()), Times.Never);
            _emailSenderMock.Verify(x => x.SendReceiveReviewEmailAsync(It.IsAny <string>(), It.IsAny <uint>()), Times.Never);
        }