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)));
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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));
        }