public async Task HandleAysnc_HappyPath_ReturnsFileInfoWithCorrectFileName() { // Arrange IWeeeAuthorization authorization = AuthorizationBuilder.CreateUserWithAllRights(); UKCompetentAuthority authority = new UKCompetentAuthority( A.Dummy <Guid>(), "Environment Agency", "EA", A.Dummy <Country>(), "*****@*****.**", 0); Scheme scheme = A.Dummy <Scheme>(); A.CallTo(() => scheme.CompetentAuthority).Returns(authority); MemberUpload memberUpload = new MemberUpload( A.Dummy <Guid>(), scheme, A.Dummy <string>(), A.Dummy <string>()); memberUpload.Submit(A.Dummy <User>()); List <MemberUpload> memberUploads = new List <MemberUpload>(); memberUploads.Add(memberUpload); SystemTime.Freeze(new DateTime(2015, 12, 31)); InvoiceRun invoiceRun = new InvoiceRun(authority, memberUploads, A.Dummy <User>()); SystemTime.Unfreeze(); ulong fileID = 123; IbisFileData ibisFileData = new IbisFileData(fileID, "Customer File.dat", "data", "Transaction File.dat", "data"); invoiceRun.SetIbisFileData(ibisFileData); ICommonDataAccess dataAccess = A.Fake <ICommonDataAccess>(); A.CallTo(() => dataAccess.FetchInvoiceRunAsync(A <Guid> ._)).Returns(invoiceRun); FetchInvoiceRunIbisZipFileHandler handler = new FetchInvoiceRunIbisZipFileHandler( authorization, dataAccess); // Act FileInfo fileInfo = await handler.HandleAsync(A.Dummy <Requests.Charges.FetchInvoiceRunIbisZipFile>()); // Assert Assert.NotNull(fileInfo); Assert.Equal("WEEE invoice files 00123 2015-12-31.zip", fileInfo.FileName); }
public async Task <IssuePendingChargesResult> HandleAsync(Requests.Charges.IssuePendingCharges message) { authorization.EnsureCanAccessInternalArea(true); authorization.EnsureUserInRole(Roles.InternalAdmin); UKCompetentAuthority authority = await dataAccess.FetchCompetentAuthority(message.Authority); IReadOnlyList <MemberUpload> memberUploads = await dataAccess.FetchSubmittedNonInvoicedMemberUploadsAsync(authority); User issuingUser = await domainUserContext.GetCurrentUserAsync(); InvoiceRun invoiceRun = new InvoiceRun(authority, memberUploads, issuingUser); var result = new IssuePendingChargesResult(); result.Errors = new List <string>(); if (authority.Name == "Environment Agency") { ulong fileId = await GetNextIbisFileId(); IbisFileDataGeneratorResult ibisFileDataGeneratorResult = await ibisFileDataGenerator.CreateFileDataAsync(fileId, invoiceRun); result.Errors.AddRange(ibisFileDataGeneratorResult.Errors); if (result.Errors.Count == 0) { IbisFileData ibisFileData = ibisFileDataGeneratorResult.IbisFileData; invoiceRun.SetIbisFileData(ibisFileData); } } if (result.Errors.Count == 0) { await dataAccess.SaveAsync(invoiceRun); result.InvoiceRunId = invoiceRun.Id; } return(result); }
/// <summary> /// Creates the data representing 1B1S customer and transaction files for the specified list /// of member uploads. /// </summary> /// <param name="fileID">The ID that the 1B1S files will use. This must be unique for every pair of 1B1S files /// and must be in the range of 0 to 99999. To avoid clashes with IDs used by the incumbent system, a seed /// value may need to be used.</param> /// <param name="invoiceRun">The invoice run specifying the list of member uploads to be included.</param> /// <returns>Returns an <see cref="IbisFileDataGeneratorResult"/> which provides the data and file names of the /// generated 1B1S customer and transaction files or a list of error which occurred during the process.</returns> public async Task <IbisFileDataGeneratorResult> CreateFileDataAsync(ulong fileID, InvoiceRun invoiceRun) { var customerFileGeneratorResult = await ibisCustomerFileGenerator.CreateAsync(fileID, invoiceRun); var ibisTransactionFileGeneratorResult = await ibisTransactionFileGenerator.CreateAsync(fileID, invoiceRun); IbisFileData ibisFileData = null; var errors = new List <string>(); if (customerFileGeneratorResult.Errors.Count == 0 && ibisTransactionFileGeneratorResult.Errors.Count == 0) { CustomerFile customerFile = customerFileGeneratorResult.IbisFile; TransactionFile transactionFile = ibisTransactionFileGeneratorResult.IbisFile; string customerFileName = string.Format("WEEHC{0:D5}.dat", fileID); string transactionFileName = string.Format("WEEHI{0:D5}.dat", fileID); string customerFileData = customerFile.Write(); string transactionFileData = transactionFile.Write(); ibisFileData = new IbisFileData( fileID, customerFileName, customerFileData, transactionFileName, transactionFileData); } else { errors = ibisFileDataErrorTranslator .MakeFriendlyErrorMessages(customerFileGeneratorResult .Errors .Union(ibisTransactionFileGeneratorResult.Errors) .ToList()); } return(new IbisFileDataGeneratorResult(ibisFileData, errors)); }
public IbisFileDataGeneratorResult(IbisFileData ibisFileData, List<string> errors) { IbisFileData = ibisFileData; Errors = errors; }
public async Task HandleAysnc_HappyPath_ReturnsFileInfoWithCorrectFileName() { // Arrange IWeeeAuthorization authorization = AuthorizationBuilder.CreateUserWithAllRights(); UKCompetentAuthority authority = new UKCompetentAuthority( A.Dummy<Guid>(), "Environment Agency", "EA", A.Dummy<Country>(), "*****@*****.**"); Scheme scheme = A.Dummy<Scheme>(); A.CallTo(() => scheme.CompetentAuthority).Returns(authority); MemberUpload memberUpload = new MemberUpload( A.Dummy<Guid>(), scheme, A.Dummy<string>(), A.Dummy<string>()); memberUpload.Submit(A.Dummy<User>()); List<MemberUpload> memberUploads = new List<MemberUpload>(); memberUploads.Add(memberUpload); SystemTime.Freeze(new DateTime(2015, 12, 31)); InvoiceRun invoiceRun = new InvoiceRun(authority, memberUploads, A.Dummy<User>()); SystemTime.Unfreeze(); ulong fileID = 123; IbisFileData ibisFileData = new IbisFileData(fileID, "Customer File.dat", "data", "Transaction File.dat", "data"); invoiceRun.SetIbisFileData(ibisFileData); ICommonDataAccess dataAccess = A.Fake<ICommonDataAccess>(); A.CallTo(() => dataAccess.FetchInvoiceRunAsync(A<Guid>._)).Returns(invoiceRun); FetchInvoiceRunIbisZipFileHandler handler = new FetchInvoiceRunIbisZipFileHandler( authorization, dataAccess); // Act FileInfo fileInfo = await handler.HandleAsync(A.Dummy<Requests.Charges.FetchInvoiceRunIbisZipFile>()); // Assert Assert.NotNull(fileInfo); Assert.Equal("WEEE invoice files 00123 2015-12-31.zip", fileInfo.FileName); }
public IbisFileDataGeneratorResult(IbisFileData ibisFileData, List <string> errors) { IbisFileData = ibisFileData; Errors = errors; }