public async Task Validate_GivenScenario_ExpectedFlagsShouldBePresent(bool hasMultipleOfFacility, bool organisationHasOtherFacilityType, bool organisationHasAssociatedScheme, bool organisationHasOtherEntityOfSameType, bool organisationHasReturns, bool aatfHasReturnData, bool expectedToDeleteAatf, bool expectedToDeleteOrganisation) { var organisation = Organisation.CreatePartnership("trading"); var aatfId = fixture.Create <Guid>(); var aatfIdForAatf = fixture.Create <Guid>(); var aatf = A.Fake <Aatf>(); A.CallTo(() => aatf.Organisation).Returns(organisation); A.CallTo(() => aatf.FacilityType).Returns(FacilityType.Aatf); A.CallTo(() => aatf.Id).Returns(aatfId); A.CallTo(() => aatf.AatfId).Returns(aatfIdForAatf); var canOrganisationBeDeletedFlags = new CanOrganisationBeDeletedFlags(); if (hasMultipleOfFacility) { canOrganisationBeDeletedFlags |= CanOrganisationBeDeletedFlags.HasMultipleOfFacility; } if (organisationHasAssociatedScheme) { canOrganisationBeDeletedFlags |= CanOrganisationBeDeletedFlags.HasScheme; } if (organisationHasReturns) { canOrganisationBeDeletedFlags |= CanOrganisationBeDeletedFlags.HasReturns; } if (organisationHasOtherFacilityType) { canOrganisationBeDeletedFlags |= CanOrganisationBeDeletedFlags.HasAe; } A.CallTo(() => aatfDataAccess.GetDetails(aatfId)).Returns(aatf); A.CallTo(() => aatfDataAccess.HasAatfData(aatfId)).Returns(aatfHasReturnData); A.CallTo(() => getOrganisationDeletionStatus.Validate(aatf.Organisation.Id, aatf.ComplianceYear, aatf.FacilityType)).Returns(canOrganisationBeDeletedFlags); A.CallTo(() => aatfDataAccess.HasAatfOrganisationOtherAeOrAatf(aatf)).Returns(organisationHasOtherEntityOfSameType); A.CallTo(() => aatfDataAccess.IsLatestAatf(aatf.Id, aatfIdForAatf)).Returns(true); var result = await getAatfDeletionStatus.Validate(aatfId); if (expectedToDeleteAatf) { result.Should().HaveFlag(CanAatfBeDeletedFlags.CanDelete); } else { result.Should().NotHaveFlag(CanAatfBeDeletedFlags.CanDelete); } if (expectedToDeleteOrganisation) { result.Should().HaveFlag(CanAatfBeDeletedFlags.CanDeleteOrganisation); } else { result.Should().NotHaveFlag(CanAatfBeDeletedFlags.CanDeleteOrganisation); } }
public async Task <CanOrganisationBeDeletedFlags> Validate(Guid organisationId, int year, FacilityType facilityType) { var result = new CanOrganisationBeDeletedFlags(); if (await organisationDataAccess.HasReturns(organisationId, year)) { result |= CanOrganisationBeDeletedFlags.HasReturns; } if (await organisationDataAccess.HasActiveUsers(organisationId)) { result |= CanOrganisationBeDeletedFlags.HasActiveUsers; } if (await organisationDataAccess.HasScheme(organisationId)) { result |= CanOrganisationBeDeletedFlags.HasScheme; } if (await organisationDataAccess.HasFacility(organisationId, FacilityType.Aatf)) { result |= CanOrganisationBeDeletedFlags.HasAatf; } if (await organisationDataAccess.HasFacility(organisationId, FacilityType.Ae)) { result |= CanOrganisationBeDeletedFlags.HasAe; } if (await organisationDataAccess.HasMultipleOfEntityFacility(organisationId, facilityType)) { result |= CanOrganisationBeDeletedFlags.HasMultipleOfFacility; } return(result); }
public AatfDeletionData(CanOrganisationBeDeletedFlags canOrganisationBeDeletedFlags, CanAatfBeDeletedFlags canAatfBeDeletedFlags) { CanOrganisationBeDeletedFlags = canOrganisationBeDeletedFlags; CanAatfBeDeletedFlags = canAatfBeDeletedFlags; }