public async Task GetWorkByIdAsyncParticipantSeeOnlyWorkInformationOnlyWhenWorkIsAccepted() { var authorId = 1u; var userId = 2u; var scientificWorkId = 1u; var scientificWork = new ScientificWork() { Id = scientificWorkId, Name = _faker.Commerce.ProductName(), Description = _faker.Commerce.ProductDescription(), CreationDate = DateTime.UtcNow, OtherAuthors = string.Join(", ", Enumerable.Range(1, 3).Select(_ => _faker.Person.FullName)), Status = StatusEnum.Accepted, MainAuthor = new User() { Id = authorId, Name = _faker.Person.FirstName, Surname = _faker.Person.LastName, Photo = null, Degree = _faker.Name.JobTitle(), University = _faker.Company.CompanyName() }, Versions = Enumerable.Range(0, 2) .Select(x => new ScientificWorkFile() { Id = (uint)x, Version = (byte)x, DateAdd = DateTime.UtcNow.AddDays(x) }) }; ScientificWorkWithReviewDto returnedDto = null; var expectedDto = new ScientificWorkWithReviewDto() { Status = scientificWork.Status.ToString(), Versions = null, Mode = nameof(UserTypeEnum.Participant), MainAuthor = _mapper.Map <UserDto>(scientificWork.MainAuthor), ScientificWork = _mapper.Map <ScientificWorkWithOtherAuthorsDto>(scientificWork) }; _scientificWorkRepositoryMock.Setup(x => x.GetWorkByIdAsync(scientificWorkId)).ReturnsAsync(scientificWork); _reviewerScientificWorkRepositoryMock.Setup(x => x.IsReviewerAsync(scientificWorkId, userId)).ReturnsAsync(false); var err = await Record.ExceptionAsync(async () => returnedDto = await _service.GetWorkByIdAsync(userId, scientificWorkId)); err.Should().BeNull(); returnedDto.Should().NotBeNull(); returnedDto.Should().BeEquivalentTo(expectedDto); _scientificWorkFileRepositoryMock.Verify(x => x.GetVersionsWithReviews(It.IsAny <uint>()), Times.Never); }
public async Task GetWorkByIdAsyncReturnNullWhenWorkDoesNotExits() { var userId = 1u; var scientificWorkId = 1u; ScientificWorkWithReviewDto returnedDto = null; _scientificWorkRepositoryMock.Setup(x => x.GetWorkByIdAsync(scientificWorkId)).ReturnsAsync((ScientificWork)null); var err = await Record.ExceptionAsync(async () => returnedDto = await _service.GetWorkByIdAsync(userId, scientificWorkId)); err.Should().BeNull(); returnedDto.Should().BeNull(); _scientificWorkRepositoryMock.Verify(x => x.GetWorkByIdAsync(scientificWorkId), Times.Once); }
public async Task GetWorkByIdAsyncThrowAuthenticationExceptionWhenUserIsParticipantAndWorkIsNotAccepted() { var authorId = 1u; var userId = 2u; var scientificWorkId = 1u; var author = new User() { Id = authorId, Name = _faker.Person.FirstName, Surname = _faker.Person.LastName, Photo = null, Degree = _faker.Name.JobTitle(), University = _faker.Company.CompanyName() }; var scientificWork = new ScientificWork() { Id = scientificWorkId, Name = _faker.Commerce.ProductName(), Description = _faker.Commerce.ProductDescription(), CreationDate = DateTime.UtcNow, OtherAuthors = string.Join(", ", Enumerable.Range(1, 3).Select(_ => _faker.Person.FullName)), Status = StatusEnum.UnderReview, MainAuthor = author, }; ScientificWorkWithReviewDto returnedDto = null; _scientificWorkRepositoryMock.Setup(x => x.GetWorkByIdAsync(scientificWorkId)).ReturnsAsync(scientificWork); _reviewerScientificWorkRepositoryMock.Setup(x => x.IsReviewerAsync(scientificWorkId, userId)).ReturnsAsync(false); var err = await Record.ExceptionAsync(async () => returnedDto = await _service.GetWorkByIdAsync(userId, scientificWorkId)); err.Should().BeOfType <AuthenticationException>(); returnedDto.Should().BeNull(); }
public async Task GetWorkByIdAsyncAuthorSeeEverything() { var userId = 1u; var reviewer1Id = 2u; var reviewer2Id = 3u; var scientificWorkId = 1u; var versionsId = 0u; var reviewId = 1u; var answerId = 1u; var author = new User() { Id = userId, Name = _faker.Person.FirstName, Surname = _faker.Person.LastName, Photo = null, Degree = _faker.Name.JobTitle(), University = _faker.Company.CompanyName() }; var reviewer1 = new User() { Id = reviewer1Id }; var reviewer2 = new User() { Id = reviewer2Id }; var scientificWork = new ScientificWork() { Id = scientificWorkId, Name = _faker.Commerce.ProductName(), Description = _faker.Commerce.ProductDescription(), CreationDate = DateTime.UtcNow, OtherAuthors = string.Join(", ", Enumerable.Range(1, 3).Select(_ => _faker.Person.FullName)), Status = StatusEnum.Accepted, MainAuthor = author, Versions = new List <ScientificWorkFile>() { new ScientificWorkFile() { Id = ++versionsId, Version = (byte)versionsId, DateAdd = DateTime.UtcNow.AddDays(versionsId), Reviews = new List <Review>() { new Review() { Id = reviewId++, DateReview = DateTime.UtcNow, Comment = _faker.Rant.Review(), Rating = _faker.Random.Byte(1, 3), Reviewer = reviewer1 }, new Review() { Id = reviewId++, DateReview = DateTime.UtcNow, File = _faker.System.FileName("pdf"), Rating = _faker.Random.Byte(1, 3), Reviewer = reviewer2, Answer = new Answer() { Id = answerId++, Comment = _faker.Lorem.Sentence(5), AnswerDate = DateTime.UtcNow, User = author } } } }, new ScientificWorkFile() { Id = ++versionsId, Version = (byte)versionsId, DateAdd = DateTime.UtcNow.AddDays(versionsId), Reviews = new List <Review>() { new Review() { Id = reviewId++, DateReview = DateTime.UtcNow, File = _faker.Rant.Review(), Rating = _faker.Random.Byte(1, 3), Reviewer = reviewer1, Answer = new Answer() { Id = answerId++, Comment = _faker.Lorem.Sentence(5), AnswerDate = DateTime.UtcNow, User = author } }, new Review() { Id = reviewId++, DateReview = DateTime.UtcNow, Comment = _faker.System.FileName("pdf"), Rating = _faker.Random.Byte(1, 3), Reviewer = reviewer2 } } }, } }; ScientificWorkWithReviewDto returnedDto = null; var expectedDto = new ScientificWorkWithReviewDto() { Status = scientificWork.Status.ToString(), Mode = "Author", MainAuthor = _mapper.Map <UserDto>(author), ScientificWork = _mapper.Map <ScientificWorkWithOtherAuthorsDto>(scientificWork), Versions = _mapper.Map <List <VersionDto> >(scientificWork.Versions) }; _scientificWorkRepositoryMock.Setup(x => x.GetWorkByIdAsync(scientificWorkId)).ReturnsAsync(scientificWork); _scientificWorkFileRepositoryMock.Setup(x => x.GetVersionsWithReviews(scientificWorkId)).ReturnsAsync(scientificWork.Versions); var err = await Record.ExceptionAsync(async () => returnedDto = await _service.GetWorkByIdAsync(userId, scientificWorkId)); err.Should().BeNull(); returnedDto.Should().NotBeNull(); returnedDto.Should().BeEquivalentTo(expectedDto); _scientificWorkFileRepositoryMock.Verify(x => x.GetVersionsWithReviews(scientificWorkId), Times.Once); }