public async Task HandleAsync_WithErrorWhenGeneratingIbisFile_DoesNotSaveChanges_AndReturnsError() { // Arrange UKCompetentAuthority authority = new UKCompetentAuthority(Guid.NewGuid(), "Environment Agency", "EA", A.Dummy <Country>(), "*****@*****.**", 0); Scheme scheme = A.Fake <Scheme>(); A.CallTo(() => scheme.CompetentAuthority).Returns(authority); List <MemberUpload> memberUploads = new List <MemberUpload>(); MemberUpload memberUpload1 = new MemberUpload( A.Dummy <Guid>(), A.Dummy <string>(), A.Dummy <List <MemberUploadError> >(), 10, 2017, scheme, A.Dummy <string>()); memberUpload1.Submit(A.Dummy <User>()); memberUploads.Add(memberUpload1); IIssuePendingChargesDataAccess dataAccess = A.Fake <IIssuePendingChargesDataAccess>(); A.CallTo(() => dataAccess.FetchCompetentAuthority(CompetentAuthority.England)).Returns(authority); A.CallTo(() => dataAccess.FetchSubmittedNonInvoicedMemberUploadsAsync(authority)) .Returns(memberUploads); var errors = new List <string> { "error" }; IbisFileDataGeneratorResult ibisFileDataGeneratorResult = new IbisFileDataGeneratorResult(null, errors); IIbisFileDataGenerator ibisFileDataGenerator = A.Fake <IIbisFileDataGenerator>(); A.CallTo(() => ibisFileDataGenerator.CreateFileDataAsync(A <ulong> ._, A <InvoiceRun> ._)) .Returns(ibisFileDataGeneratorResult); IssuePendingChargesHandler handler = new IssuePendingChargesHandler( A.Dummy <IWeeeAuthorization>(), dataAccess, ibisFileDataGenerator, A.Dummy <IDomainUserContext>()); Requests.Charges.IssuePendingCharges request = new Requests.Charges.IssuePendingCharges(CompetentAuthority.England); // Act var result = await handler.HandleAsync(request); // Assert A.CallTo(() => dataAccess.SaveAsync(A <InvoiceRun> ._)) .MustNotHaveHappened(); Assert.Null(result.InvoiceRunId); Assert.NotEmpty(result.Errors); }
public IssuePendingChargesHandler( IWeeeAuthorization authorization, IIssuePendingChargesDataAccess dataAccess, IIbisFileDataGenerator ibisFileDataGenerator, IDomainUserContext domainUserContext) { this.authorization = authorization; this.dataAccess = dataAccess; this.ibisFileDataGenerator = ibisFileDataGenerator; this.domainUserContext = domainUserContext; }