public When_OpportunityService_Is_Called_To_Get_Opportunity_Spreadsheet_Data() { var config = new MapperConfiguration(c => c.AddMaps(typeof(OpportunityMapper).Assembly)); var mapper = new Mapper(config); _opportunityRepository = Substitute.For <IOpportunityRepository>(); var opportunityItemRepository = Substitute.For <IRepository <OpportunityItem> >(); var provisionGapRepository = Substitute.For <IRepository <ProvisionGap> >(); var referralRepository = Substitute.For <IRepository <Domain.Models.Referral> >(); var googleMapApiClient = Substitute.For <IGoogleMapApiClient>(); _opportunityPipelineReportWriter = Substitute.For <IFileWriter <OpportunityReportDto> >(); var dateTimeProvider = Substitute.For <IDateTimeProvider>(); dateTimeProvider.UtcNow().Returns(new DateTime(2019, 03, 10)); _opportunityRepository.GetPipelineOpportunitiesAsync(Arg.Any <int>()) .Returns(new OpportunityReportDtoBuilder() .AddReferralItem() .AddProvisionGapItem() .Build()); var opportunityService = new OpportunityService(mapper, _opportunityRepository, opportunityItemRepository, provisionGapRepository, referralRepository, googleMapApiClient, _opportunityPipelineReportWriter, dateTimeProvider); _result = opportunityService.GetOpportunitySpreadsheetDataAsync(1) .GetAwaiter().GetResult(); }
public async Task <FileDownloadDto> GetOpportunitySpreadsheetDataAsync(int opportunityId) { var dto = await _opportunityRepository.GetPipelineOpportunitiesAsync(opportunityId); var fileContent = _opportunityPipelineReportWriter.WriteReport(dto); var companyName = dto.CompanyName.ToLetterOrDigit(); var formattedDate = _dateTimeProvider.UtcNow().ToGmtStandardTime().ToString("ddMMMyyyy"); return(new FileDownloadDto { FileName = $"{companyName}_opportunities_{formattedDate}.xlsx", ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", FileContent = fileContent }); }