public async Task <ActionResult> DownloadSubmissionChanges(Guid memberUploadId) { CSVFileData csvFileData; using (IWeeeClient client = apiClient()) { var request = new GetSubmissionChangesCsv(memberUploadId); csvFileData = await client.SendAsync(User.GetAccessToken(), request); } byte[] data = new UTF8Encoding().GetBytes(csvFileData.FileContent); return(File(data, "text/csv", CsvFilenameFormat.FormatFileName(csvFileData.FileName))); }
public async Task HandleAsync_WithBrandNamesLongerThanMaxLength_ThrowsException() { // Arrange var authorization = new AuthorizationBuilder().AllowInternalAreaAccess().Build(); var dataAccess = A.Fake <IGetSubmissionChangesCsvDataAccess>(); var csvWriter = A.Fake <ICsvWriter <SubmissionChangesCsvData> >(); var memberUpload = A.Fake <MemberUpload>(); A.CallTo(() => memberUpload.IsSubmitted) .Returns(true); A.CallTo(() => dataAccess.GetMemberUpload(A <Guid> ._)) .Returns(memberUpload); var csvData1 = new SubmissionChangesCsvData { ProducerName = "Producer1", BrandNames = new string('A', GetSubmissionChangesCsvHandler.MaxBrandNamesLength + 1) }; var csvData2 = new SubmissionChangesCsvData { ProducerName = "Producer2", BrandNames = "BrandName2" }; var csvData3 = new SubmissionChangesCsvData { ProducerName = "Producer3", BrandNames = new string('A', GetSubmissionChangesCsvHandler.MaxBrandNamesLength + 1) }; A.CallTo(() => dataAccess.GetSubmissionChanges(A <Guid> ._)) .Returns(new List <SubmissionChangesCsvData> { csvData1, csvData2, csvData3 }); var handler = new GetSubmissionChangesCsvHandler(authorization, dataAccess, csvWriter); var request = new GetSubmissionChangesCsv(Guid.NewGuid()); // 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 HandleAsync_ReturnsFileContent() { // Arrange var authorization = new AuthorizationBuilder().AllowInternalAreaAccess().Build(); var dataAccess = A.Fake <IGetSubmissionChangesCsvDataAccess>(); var csvWriter = A.Fake <ICsvWriter <SubmissionChangesCsvData> >(); var memberUpload = A.Fake <MemberUpload>(); A.CallTo(() => memberUpload.IsSubmitted) .Returns(true); A.CallTo(() => dataAccess.GetMemberUpload(A <Guid> ._)) .Returns(memberUpload); var handler = new GetSubmissionChangesCsvHandler(authorization, dataAccess, csvWriter); var submissionId = Guid.NewGuid(); var request = new GetSubmissionChangesCsv(submissionId); A.CallTo(() => csvWriter.Write(A <IEnumerable <SubmissionChangesCsvData> > ._)) .Returns("CsvData"); // Act var result = await handler.HandleAsync(request); // Assert A.CallTo(() => dataAccess.GetSubmissionChanges(submissionId)) .MustHaveHappened(); A.CallTo(() => csvWriter.Write(A <IEnumerable <SubmissionChangesCsvData> > ._)) .MustHaveHappened(); Assert.NotEmpty(result.FileContent); Assert.Equal("CsvData", result.FileContent); }
public async Task HandleAsync_ReturnsFileContent() { // Arrange var authorization = new AuthorizationBuilder().AllowInternalAreaAccess().Build(); var dataAccess = A.Fake<IGetSubmissionChangesCsvDataAccess>(); var csvWriter = A.Fake<ICsvWriter<SubmissionChangesCsvData>>(); var memberUpload = A.Fake<MemberUpload>(); A.CallTo(() => memberUpload.IsSubmitted) .Returns(true); A.CallTo(() => dataAccess.GetMemberUpload(A<Guid>._)) .Returns(memberUpload); var handler = new GetSubmissionChangesCsvHandler(authorization, dataAccess, csvWriter); var submissionId = Guid.NewGuid(); var request = new GetSubmissionChangesCsv(submissionId); A.CallTo(() => csvWriter.Write(A<IEnumerable<SubmissionChangesCsvData>>._)) .Returns("CsvData"); // Act var result = await handler.HandleAsync(request); // Assert A.CallTo(() => dataAccess.GetSubmissionChanges(submissionId)) .MustHaveHappened(); A.CallTo(() => csvWriter.Write(A<IEnumerable<SubmissionChangesCsvData>>._)) .MustHaveHappened(); Assert.NotEmpty(result.FileContent); Assert.Equal("CsvData", result.FileContent); }
public async Task HandleAsync_WithBrandNamesLongerThanMaxLength_ThrowsException() { // Arrange var authorization = new AuthorizationBuilder().AllowInternalAreaAccess().Build(); var dataAccess = A.Fake<IGetSubmissionChangesCsvDataAccess>(); var csvWriter = A.Fake<ICsvWriter<SubmissionChangesCsvData>>(); var memberUpload = A.Fake<MemberUpload>(); A.CallTo(() => memberUpload.IsSubmitted) .Returns(true); A.CallTo(() => dataAccess.GetMemberUpload(A<Guid>._)) .Returns(memberUpload); var csvData1 = new SubmissionChangesCsvData { ProducerName = "Producer1", BrandNames = new string('A', GetSubmissionChangesCsvHandler.MaxBrandNamesLength + 1) }; var csvData2 = new SubmissionChangesCsvData { ProducerName = "Producer2", BrandNames = "BrandName2" }; var csvData3 = new SubmissionChangesCsvData { ProducerName = "Producer3", BrandNames = new string('A', GetSubmissionChangesCsvHandler.MaxBrandNamesLength + 1) }; A.CallTo(() => dataAccess.GetSubmissionChanges(A<Guid>._)) .Returns(new List<SubmissionChangesCsvData> { csvData1, csvData2, csvData3 }); var handler = new GetSubmissionChangesCsvHandler(authorization, dataAccess, csvWriter); var request = new GetSubmissionChangesCsv(Guid.NewGuid()); // 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> DownloadSubmissionChanges(Guid memberUploadId) { CSVFileData csvFileData; using (IWeeeClient client = apiClient()) { var request = new GetSubmissionChangesCsv(memberUploadId); csvFileData = await client.SendAsync(User.GetAccessToken(), request); } byte[] data = new UTF8Encoding().GetBytes(csvFileData.FileContent); return File(data, "text/csv", CsvFilenameFormat.FormatFileName(csvFileData.FileName)); }