Beispiel #1
0
        public async Task CreateAsync(User claimsPrincipal, RegionAnnualReportDTO regionAnnualReportDTO)
        {
            var region = await _repositoryWrapper.RegionAnnualReports.GetFirstOrDefaultAsync(
                predicate : a => a.RegionId == regionAnnualReportDTO.RegionId && a.Date.Year == regionAnnualReportDTO.Date.Year);

            if (await CheckCreatedAsync(region.ID, region.Date.Year))
            {
                throw new InvalidOperationException("Report is already crated!");
            }
            if (!await _regionAccessService.HasAccessAsync(claimsPrincipal, region.ID))
            {
                throw new UnauthorizedAccessException("No access for creating Annual Report!");
            }
            var regionAnnualReport = _mapper.Map <RegionAnnualReportDTO, RegionAnnualReport>(regionAnnualReportDTO);

            regionAnnualReport.Date = DateTime.Now;
            await _repositoryWrapper.RegionAnnualReports.CreateAsync(regionAnnualReport);

            await _repositoryWrapper.SaveAsync();
        }
        public async Task CreateByNameAsync_Succeeded_ReturnsExpected()
        {
            //Arrange
            RegionAnnualReportDTO expected = _fakeRegionAnnualReport();

            _mockRepositoryWrapper.Setup(x =>
                                         x.Region.GetFirstOrDefaultAsync(
                                             It.IsAny <Expression <Func <Region, bool> > >(), null))
            .ReturnsAsync(new Region()
            {
                RegionName = "TestRegionName"
            });
            _mockRegionAccessService.Setup(x => x.HasAccessAsync(It.IsAny <User>(), It.IsAny <int>())).ReturnsAsync(true);
            _mockRepositoryWrapper.Setup(x =>
                                         x.RegionAnnualReports.GetFirstOrDefaultAsync(
                                             It.IsAny <Expression <Func <RegionAnnualReport, bool> > >(), null))
            .ReturnsAsync((RegionAnnualReport)null);
            _mockRepositoryWrapper.Setup(x => x.RegionAnnualReports.GetRegionMembersInfoAsync(It.IsAny <int>(),
                                                                                              It.IsAny <int>(), It.IsAny <bool>(), It.IsAny <int>(), It.IsAny <int>()))
            .ReturnsAsync(new List <RegionMembersInfoTableObject>()
            {
                _fakeMembersInfoTableObject(),
            });
            _mockMapper.Setup(x => x.Map <RegionAnnualReportDTO>(It.IsAny <RegionAnnualReport>()))
            .Returns(expected);

            //Act
            var result = await _service.CreateByNameAsync(new User(), 1, DateTime.Now.Year, _fakeRegionAnnualReportQuestions());

            //Assert
            _mockRepositoryWrapper.Verify(x => x.RegionAnnualReports.Create(It.IsAny <RegionAnnualReport>()),
                                          Times.Once);
            _mockRepositoryWrapper.Verify(x => x.SaveAsync(), Times.Once);
            _mockMapper.Verify(x => x.Map <RegionAnnualReportDTO>(It.IsAny <RegionAnnualReport>()), Times.Once);
            Assert.AreEqual(expected, result);
        }