Exemple #1
0
        public async void ExportZip_When_Enum_Is_Agency_Successfully_Returns_Csv_File_With_1_Record_Populated()
        {
            //Arrange
            var bacsExportType = BacsExportType.Agency;
            var agencyIds      = new[] { "Agency 1" };
            var agencyList     = _testDataBuilder.AddSingleAgency();
            var paymentData    = _testDataBuilder.AddSinglePayment();
            var expectedResult = _testDataBuilder.AddSingleAgencyResult();

            _mockPaymentsRepository.Setup(x => x.GetBetweenDates(startDate, endDateTime)).Returns(paymentData);
            _mockAgencyRepository.Setup(x => x.GetAgenciesForPayments(agencyIds)).ReturnsAsync(agencyList);
            _mockApplicationWrapper.Setup(x => x["EnableAgencyPayments"]).Returns("true");
            _paymentServiceFactory.GetPaymentTypeService(bacsExportType);

            //Act
            await _bacsExportService.ExportZip(bacsExportType);

            //Assert/Verify
            _testDataBuilder.VerifyCsvRecords <BacsResult>(bacsExportType, x =>
            {
                var record = Assert.Single(x);
                Assert.Equal(expectedResult.ToList()[0].SortCode, record.SortCode);
                Assert.Equal(expectedResult.ToList()[0].AccountName, record.AccountName);
                Assert.Equal(expectedResult.ToList()[0].AccountNumber, record.AccountNumber);
                Assert.Equal(expectedResult.ToList()[0].Ref, record.Ref);
                Assert.Equal(expectedResult.ToList()[0].Amount, record.Amount);
            });
        }
        public async Task ExportZip(BacsExportType bacsExportType)
        {
            if (bacsExportType == BacsExportType.None)
            {
                const string invalidExportTypeMessage = "No export type provided.";
                throw new Exception(invalidExportTypeMessage);
            }

            var startDate = _dateTimeService.GetStartDateTime();
            var endDate   = _dateTimeService.GetCurrentDateTime();

            var service = _paymentServiceFactory.GetPaymentTypeService(bacsExportType);

            if (!service.ArePaymentsEnabled())
            {
                throw new Exception("Invalid BACS Export Type.");
            }

            var payments = await service.GetPayments(startDate, endDate);

            var filename = GetFilename(bacsExportType);

            _csvWriterWrapper.WriteRecords(payments, filename);
        }