public async Task GetMembersDetailsCSVHandler_WithBrandNamesLongerThanMaxLength_ThrowsException() { // Arrange var complianceYear = 2016; var authorization = new AuthorizationBuilder().AllowInternalAreaAccess().Build(); var context = A.Fake <WeeeContext>(); var storedProcedures = A.Fake <IStoredProcedures>(); var csvWriter = A.Fake <ICsvWriter <MembersDetailsCsvData> >(); A.CallTo(() => context.StoredProcedures) .Returns(storedProcedures); var csvData1 = new MembersDetailsCsvData { ProducerName = "Producer1", BrandNames = new string('A', GetMembersDetailsCsvHandler.MaxBrandNamesLength + 1) }; var csvData2 = new MembersDetailsCsvData { ProducerName = "Producer2", BrandNames = "BrandName2" }; var csvData3 = new MembersDetailsCsvData { ProducerName = "Producer3", BrandNames = new string('A', GetMembersDetailsCsvHandler.MaxBrandNamesLength + 1) }; A.CallTo(() => storedProcedures .SpgCSVDataBySchemeComplianceYearAndAuthorisedAuthority(A <int> ._, A <bool> ._, A <bool> ._, A <Guid> ._, A <Guid> ._)) .Returns(new List <MembersDetailsCsvData> { csvData1, csvData2, csvData3 }); var handler = new GetMembersDetailsCsvHandler(authorization, context, csvWriter); var request = new GetMemberDetailsCsv(complianceYear, false, Guid.NewGuid(), Guid.NewGuid(), true); // Act var exception = await Record.ExceptionAsync(() => handler.HandleAsync(request)); // Assert Assert.NotNull(exception); Assert.Contains("Producer1", exception.Message); Assert.Contains("Producer3", exception.Message); Assert.Contains("brand names", exception.Message); }
public async Task GetMembersDetailsCSVHandler_ComplianceYear_ReturnsFileContent() { // Arrange var complianceYear = 2016; var authorization = new AuthorizationBuilder().AllowInternalAreaAccess().Build(); var context = A.Fake <WeeeContext>(); var csvWriter = new CsvWriter <MembersDetailsCsvData>(A.Dummy <IExcelSanitizer>()); var handler = new GetMembersDetailsCsvHandler(authorization, context, csvWriter); var request = new GetMemberDetailsCsv(complianceYear); // Act CSVFileData data = await handler.HandleAsync(request); // Assert Assert.NotEmpty(data.FileContent); }
public async Task GetMembersDetailsCSVHandler_NoComplianceYear_ThrowsArgumentException() { // Arrange var complianceYear = 0; var authorization = new AuthorizationBuilder().AllowInternalAreaAccess().Build(); var context = A.Fake <WeeeContext>(); var csvWriter = A.Fake <ICsvWriter <MembersDetailsCsvData> >(); var handler = new GetMembersDetailsCsvHandler(authorization, context, csvWriter); var request = new GetMemberDetailsCsv(complianceYear); // Act Func <Task> action = async() => await handler.HandleAsync(request); // Assert await Assert.ThrowsAsync <ArgumentException>(action); }
public async Task GetMembersDetailsCSVHandler_ComplianceYear_ReturnsFileContent() { // Arrange var complianceYear = 2016; var authorization = new AuthorizationBuilder().AllowInternalAreaAccess().Build(); var context = A.Fake<WeeeContext>(); var csvWriter = new CsvWriter<MembersDetailsCsvData>(A.Dummy<IExcelSanitizer>()); var handler = new GetMembersDetailsCsvHandler(authorization, context, csvWriter); var request = new GetMemberDetailsCsv(complianceYear); // Act CSVFileData data = await handler.HandleAsync(request); // Assert Assert.NotEmpty(data.FileContent); }
public async Task GetMembersDetailsCSVHandler_NoComplianceYear_ThrowsArgumentException() { // Arrange var complianceYear = 0; var authorization = new AuthorizationBuilder().AllowInternalAreaAccess().Build(); var context = A.Fake<WeeeContext>(); var csvWriter = A.Fake<ICsvWriter<MembersDetailsCsvData>>(); var handler = new GetMembersDetailsCsvHandler(authorization, context, csvWriter); var request = new GetMemberDetailsCsv(complianceYear); // Act Func<Task> action = async () => await handler.HandleAsync(request); // Assert await Assert.ThrowsAsync<ArgumentException>(action); }
public async Task <ActionResult> DownloadProducerDetailsCsv(int complianceYear, Guid?schemeId, Guid?authorityId, bool includeRemovedProducers, bool includeBrandNames) { var fileName = new StringBuilder(); fileName.AppendFormat("{0:D4}", complianceYear); if (schemeId != null) { using (var client = apiClient()) { var requestScheme = new GetSchemeById(schemeId.Value); var scheme = await client.SendAsync(User.GetAccessToken(), requestScheme); fileName.AppendFormat("_{0}", scheme.ApprovalName); } } if (authorityId != null) { using (var client = apiClient()) { var requestAuthority = new GetUKCompetentAuthorityById(authorityId.Value); var authorityData = await client.SendAsync(User.GetAccessToken(), requestAuthority); fileName.AppendFormat("_{0}", authorityData.Abbreviation); } } fileName.AppendFormat("_producerdetails_{0:ddMMyyyy_HHmm}.csv", SystemTime.UtcNow); CSVFileData membersDetailsCsvData; using (var client = apiClient()) { var request = new GetMemberDetailsCsv(complianceYear, includeRemovedProducers, schemeId, authorityId, includeBrandNames); membersDetailsCsvData = await client.SendAsync(User.GetAccessToken(), request); } var data = new UTF8Encoding().GetBytes(membersDetailsCsvData.FileContent); return(File(data, "text/csv", CsvFilenameFormat.FormatFileName(fileName.ToString()))); }
public async Task GetMembersDetailsCSVHandler_WithoutBrandNames_DoesNotIncludeBrandNamesColumn() { // Arrange var complianceYear = 2016; var authorization = new AuthorizationBuilder().AllowInternalAreaAccess().Build(); var context = A.Fake <WeeeContext>(); var csvWriter = A.Fake <ICsvWriter <MembersDetailsCsvData> >(); var handler = new GetMembersDetailsCsvHandler(authorization, context, csvWriter); var request = new GetMemberDetailsCsv(complianceYear, includeBrandNames: false); // Act await handler.HandleAsync(request); // Assert A.CallTo(() => csvWriter.DefineColumn("Brand names", A <Func <MembersDetailsCsvData, object> > ._, A <bool> ._)) .MustNotHaveHappened(); }
public async Task GetMembersDetailsCSVHandler_WithoutBrandNames_DoesNotIncludeBrandNamesColumn() { // Arrange var complianceYear = 2016; var authorization = new AuthorizationBuilder().AllowInternalAreaAccess().Build(); var context = A.Fake<WeeeContext>(); var csvWriter = A.Fake<ICsvWriter<MembersDetailsCsvData>>(); var handler = new GetMembersDetailsCsvHandler(authorization, context, csvWriter); var request = new GetMemberDetailsCsv(complianceYear, includeBrandNames: false); // Act await handler.HandleAsync(request); // Assert A.CallTo(() => csvWriter.DefineColumn("Brand names", A<Func<MembersDetailsCsvData, object>>._, A<bool>._)) .MustNotHaveHappened(); }
public async Task GetMembersDetailsCSVHandler_WithBrandNamesLongerThanMaxLength_ThrowsException() { // Arrange var complianceYear = 2016; var authorization = new AuthorizationBuilder().AllowInternalAreaAccess().Build(); var context = A.Fake<WeeeContext>(); var storedProcedures = A.Fake<IStoredProcedures>(); var csvWriter = A.Fake<ICsvWriter<MembersDetailsCsvData>>(); A.CallTo(() => context.StoredProcedures) .Returns(storedProcedures); var csvData1 = new MembersDetailsCsvData { ProducerName = "Producer1", BrandNames = new string('A', GetMembersDetailsCsvHandler.MaxBrandNamesLength + 1) }; var csvData2 = new MembersDetailsCsvData { ProducerName = "Producer2", BrandNames = "BrandName2" }; var csvData3 = new MembersDetailsCsvData { ProducerName = "Producer3", BrandNames = new string('A', GetMembersDetailsCsvHandler.MaxBrandNamesLength + 1) }; A.CallTo(() => storedProcedures .SpgCSVDataBySchemeComplianceYearAndAuthorisedAuthority(A<int>._, A<bool>._, A<bool>._, A<Guid>._, A<Guid>._)) .Returns(new List<MembersDetailsCsvData> { csvData1, csvData2, csvData3 }); var handler = new GetMembersDetailsCsvHandler(authorization, context, csvWriter); var request = new GetMemberDetailsCsv(complianceYear, false, Guid.NewGuid(), Guid.NewGuid(), true); // Act var exception = await Record.ExceptionAsync(() => handler.HandleAsync(request)); // Assert Assert.NotNull(exception); Assert.Contains("Producer1", exception.Message); Assert.Contains("Producer3", exception.Message); Assert.Contains("brand names", exception.Message); }
public async Task<ActionResult> DownloadProducerDetailsCsv(int complianceYear, Guid? schemeId, Guid? authorityId, bool includeRemovedProducers, bool includeBrandNames) { StringBuilder fileName = new StringBuilder(); fileName.AppendFormat("{0:D4}", complianceYear); if (schemeId != null) { using (IWeeeClient client = apiClient()) { GetSchemeById requestScheme = new GetSchemeById(schemeId.Value); SchemeData scheme = await client.SendAsync(User.GetAccessToken(), requestScheme); fileName.AppendFormat("_{0}", scheme.ApprovalName); } } if (authorityId != null) { using (IWeeeClient client = apiClient()) { GetUKCompetentAuthorityById requestAuthority = new GetUKCompetentAuthorityById(authorityId.Value); UKCompetentAuthorityData authorityData = await client.SendAsync(User.GetAccessToken(), requestAuthority); fileName.AppendFormat("_{0}", authorityData.Abbreviation); } } fileName.AppendFormat("_producerdetails_{0:ddMMyyyy_HHmm}.csv", SystemTime.UtcNow); CSVFileData membersDetailsCsvData; using (IWeeeClient client = apiClient()) { GetMemberDetailsCsv request = new GetMemberDetailsCsv(complianceYear, includeRemovedProducers, schemeId, authorityId, includeBrandNames); membersDetailsCsvData = await client.SendAsync(User.GetAccessToken(), request); } byte[] data = new UTF8Encoding().GetBytes(membersDetailsCsvData.FileContent); return File(data, "text/csv", CsvFilenameFormat.FormatFileName(fileName.ToString())); }