public async Task HandleAsync_ReturnsFileContent()
        {
            // Arrange
            var authorization = new AuthorizationBuilder().AllowInternalAreaAccess().Build();
            var dataAccess = A.Fake<IGetDataReturnSubmissionEeeChangesCsvDataAccess>();
            var csvWriter = A.Fake<ICsvWriter<DataReturnSubmissionEeeChangesCsvData>>();

            var handler = new GetDataReturnSubmissionEeeChangesCsvHandler(authorization, dataAccess, csvWriter);

            var currentSubmissionId = Guid.NewGuid();
            var previousSubmissionId = Guid.NewGuid();

            var request = new GetDataReturnSubmissionEeeChangesCsv(currentSubmissionId, previousSubmissionId);

            A.CallTo(() => csvWriter.Write(A<IEnumerable<DataReturnSubmissionEeeChangesCsvData>>._))
                .Returns("CsvData");

            // Act
            var result = await handler.HandleAsync(request);

            // Assert
            A.CallTo(() => dataAccess.GetChanges(currentSubmissionId, previousSubmissionId))
                .MustHaveHappened();

            A.CallTo(() => csvWriter.Write(A<IEnumerable<DataReturnSubmissionEeeChangesCsvData>>._))
                .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 <IGetDataReturnSubmissionEeeChangesCsvDataAccess>();
            var csvWriter     = A.Fake <ICsvWriter <DataReturnSubmissionEeeChangesCsvData> >();

            var handler = new GetDataReturnSubmissionEeeChangesCsvHandler(authorization, dataAccess, csvWriter);

            var currentSubmissionId  = Guid.NewGuid();
            var previousSubmissionId = Guid.NewGuid();

            var request = new GetDataReturnSubmissionEeeChangesCsv(currentSubmissionId, previousSubmissionId);

            A.CallTo(() => csvWriter.Write(A <IEnumerable <DataReturnSubmissionEeeChangesCsvData> > ._))
            .Returns("CsvData");

            // Act
            var result = await handler.HandleAsync(request);

            // Assert
            A.CallTo(() => dataAccess.GetChanges(currentSubmissionId, previousSubmissionId))
            .MustHaveHappened();

            A.CallTo(() => csvWriter.Write(A <IEnumerable <DataReturnSubmissionEeeChangesCsvData> > ._))
            .MustHaveHappened();

            Assert.NotEmpty(result.FileContent);
            Assert.Equal("CsvData", result.FileContent);
        }
        public async Task <ActionResult> DownloadDataReturnSubmissionEeeChanges(Guid currentSubmission, Guid previousSubmission)
        {
            CSVFileData csvFileData;

            using (IWeeeClient client = apiClient())
            {
                var request = new GetDataReturnSubmissionEeeChangesCsv(currentSubmission, previousSubmission);
                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<ActionResult> DownloadDataReturnSubmissionEeeChanges(Guid currentSubmission, Guid previousSubmission)
        {
            CSVFileData csvFileData;
            using (IWeeeClient client = apiClient())
            {
                var request = new GetDataReturnSubmissionEeeChangesCsv(currentSubmission, previousSubmission);
                csvFileData = await client.SendAsync(User.GetAccessToken(), request);
            }

            byte[] data = new UTF8Encoding().GetBytes(csvFileData.FileContent);
            return File(data, "text/csv", CsvFilenameFormat.FormatFileName(csvFileData.FileName));
        }