Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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();
        }
Esempio n. 4
0
        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);
        }