public DeletePublishedProvidersService(ICreateDeletePublishedProvidersJobs jobs,
                                               IPublishedFundingRepository publishedFundingRepository,
                                               IPublishingResiliencePolicies publishedFundingResilience,
                                               IJobManagement jobManagement,
                                               IDeleteFundingSearchDocumentsService deleteFundingSearchDocumentsService,
                                               IDeletePublishedFundingBlobDocumentsService deletePublishedFundingBlobDocumentsService,
                                               IDeselectSpecificationForFundingService deselectSpecificationForFundingService,
                                               ILogger logger) : base(jobManagement, logger)
        {
            Guard.ArgumentNotNull(jobs, nameof(jobs));
            Guard.ArgumentNotNull(publishedFundingRepository, nameof(publishedFundingRepository));
            Guard.ArgumentNotNull(publishedFundingResilience?.PublishedFundingRepository, nameof(publishedFundingResilience.PublishedFundingRepository));
            Guard.ArgumentNotNull(publishedFundingResilience?.BlobClient, nameof(publishedFundingResilience.BlobClient));
            Guard.ArgumentNotNull(logger, nameof(logger));
            Guard.ArgumentNotNull(deletePublishedFundingBlobDocumentsService, nameof(deletePublishedFundingBlobDocumentsService));
            Guard.ArgumentNotNull(deleteFundingSearchDocumentsService, nameof(deleteFundingSearchDocumentsService));
            Guard.ArgumentNotNull(deselectSpecificationForFundingService, nameof(deleteFundingSearchDocumentsService));

            _jobs = jobs;
            _publishedFundingRepository = publishedFundingRepository;
            _logger = logger;
            _deselectSpecificationForFundingService     = deselectSpecificationForFundingService;
            _deleteFundingSearchDocumentsService        = deleteFundingSearchDocumentsService;
            _deletePublishedFundingBlobDocumentsService = deletePublishedFundingBlobDocumentsService;
            _publishedFundingRepositoryPolicy           = publishedFundingResilience.PublishedFundingRepository;
        }
        public void SetUp()
        {
            _deletePublishedProviders   = Substitute.For <ICreateDeletePublishedProvidersJobs>();
            _publishedFundingRepository = Substitute.For <IPublishedFundingRepository>();
            _jobManagement = Substitute.For <IJobManagement>();
            _deletePublishedFundingBlobDocumentsService = Substitute.For <IDeletePublishedFundingBlobDocumentsService>();
            _deselectSpecificationForFundingService     = Substitute.For <IDeselectSpecificationForFundingService>();
            _deleteFundingSearchDocumentsService        = Substitute.For <IDeleteFundingSearchDocumentsService>();

            _service = new DeletePublishedProvidersService(_deletePublishedProviders,
                                                           _publishedFundingRepository,
                                                           new ResiliencePolicies
            {
                PublishedProviderSearchRepository = Policy.NoOpAsync(),
                BlobClient = Policy.NoOpAsync(),
                PublishedFundingRepository = Policy.NoOpAsync(),
                SpecificationsApiClient    = Policy.NoOpAsync()
            },
                                                           _jobManagement,
                                                           _deleteFundingSearchDocumentsService,
                                                           _deletePublishedFundingBlobDocumentsService,
                                                           _deselectSpecificationForFundingService,
                                                           Substitute.For <ILogger>());

            _fundingPeriodId = NewRandomString();
            _fundingStreamId = NewRandomString();
            _jobId           = NewRandomString();
        }