private void SetAatfDeleteFlags(DeleteAnAatf message) { var canAatfBeDeletedFlags = new CanAatfBeDeletedFlags(); canAatfBeDeletedFlags |= CanAatfBeDeletedFlags.CanDelete; A.CallTo(() => getAatfDeletionStatus.Validate(message.AatfId)).Returns(canAatfBeDeletedFlags); }
public async Task <CanAatfBeDeletedFlags> Validate(Guid aatfId) { var result = new CanAatfBeDeletedFlags(); var aatf = await aatfDataAccess.GetDetails(aatfId); var isLatest = await aatfDataAccess.IsLatestAatf(aatf.Id, aatf.AatfId); if (!isLatest) { result |= CanAatfBeDeletedFlags.IsNotLatest; return(result); } var hasData = await aatfDataAccess.HasAatfData(aatfId); if (hasData) { result |= CanAatfBeDeletedFlags.HasData; return(result); } var organisationDeletionStatus = await getOrganisationDeletionStatus.Validate(aatf.Organisation.Id, aatf.ComplianceYear, aatf.FacilityType); if (organisationDeletionStatus.HasFlag(CanOrganisationBeDeletedFlags.HasReturns) && await aatfDataAccess.HasAatfOrganisationOtherAeOrAatf(aatf)) { result |= CanAatfBeDeletedFlags.CanDelete; } else if (!organisationDeletionStatus.HasFlag(CanOrganisationBeDeletedFlags.HasReturns) && await aatfDataAccess.HasAatfOrganisationOtherAeOrAatf(aatf)) { result |= CanAatfBeDeletedFlags.CanDelete; } else if (!organisationDeletionStatus.HasFlag(CanOrganisationBeDeletedFlags.HasReturns) && !await aatfDataAccess.HasAatfOrganisationOtherAeOrAatf(aatf)) { result |= CanAatfBeDeletedFlags.CanDelete; if (!organisationDeletionStatus.HasFlag(CanOrganisationBeDeletedFlags.HasScheme) && !organisationDeletionStatus.HasFlag(CanOrganisationBeDeletedFlags.HasMultipleOfFacility) && (aatf.FacilityType == FacilityType.Aatf && !organisationDeletionStatus.HasFlag(CanOrganisationBeDeletedFlags.HasAe) || (aatf.FacilityType == FacilityType.Ae && !organisationDeletionStatus.HasFlag(CanOrganisationBeDeletedFlags.HasAatf)))) { result |= CanAatfBeDeletedFlags.CanDeleteOrganisation; } } return(result); }
public async Task HandleAsync_GivenAatfCannotBeDeleted_InvalidOperationExceptionExpectedAndAatfShouldNotBeDeleted() { using (var databaseWrapper = new DatabaseWrapper()) { var message = fixture.Create <DeleteAnAatf>(); var organisation = EA.Weee.Domain.Organisation.Organisation.CreatePartnership("trading"); var aatf = ObligatedWeeeIntegrationCommon.CreateAatf(databaseWrapper, organisation); databaseWrapper.WeeeContext.Aatfs.Add(aatf); await databaseWrapper.WeeeContext.SaveChangesAsync(); databaseWrapper.WeeeContext.Aatfs.Where(a => a.Id == aatf.Id).Should().NotBeEmpty(); var canAatfBeDeletedFlags = new CanAatfBeDeletedFlags(); A.CallTo(() => getAatfDeletionStatus.Validate(message.AatfId)).Returns(canAatfBeDeletedFlags); var result = await Xunit.Record.ExceptionAsync(() => Handler(databaseWrapper).HandleAsync(message)); result.Should().BeOfType <InvalidOperationException>(); } }
public AatfDeletionData(CanOrganisationBeDeletedFlags canOrganisationBeDeletedFlags, CanAatfBeDeletedFlags canAatfBeDeletedFlags) { CanOrganisationBeDeletedFlags = canOrganisationBeDeletedFlags; CanAatfBeDeletedFlags = canAatfBeDeletedFlags; }