Esempio n. 1
0
        public PublishedFundingStatusUpdateService(
            IPublishingResiliencePolicies publishingResiliencePolicies,
            IVersionRepository <PublishedFundingVersion> publishedFundingVersionRepository,
            IPublishedFundingIdGeneratorResolver publishedFundingIdGeneratorResolver,
            ILogger logger,
            IPublishingEngineOptions publishingEngineOptions,
            IVersionBulkRepository <PublishedFundingVersion> publishedFundingVersionBulkRepository,
            IPublishedFundingBulkRepository publishedFundingBulkRepository)
        {
            Guard.ArgumentNotNull(publishingResiliencePolicies?.PublishedFundingRepository, nameof(publishingResiliencePolicies.PublishedFundingRepository));
            Guard.ArgumentNotNull(publishingResiliencePolicies?.PublishedProviderVersionRepository, nameof(publishingResiliencePolicies.PublishedProviderVersionRepository));
            Guard.ArgumentNotNull(publishedFundingVersionRepository, nameof(publishedFundingVersionRepository));
            Guard.ArgumentNotNull(logger, nameof(logger));
            Guard.ArgumentNotNull(publishingEngineOptions, nameof(publishingEngineOptions));
            Guard.ArgumentNotNull(publishedFundingVersionBulkRepository, nameof(publishedFundingVersionBulkRepository));
            Guard.ArgumentNotNull(publishedFundingBulkRepository, nameof(publishedFundingBulkRepository));

            _publishingResiliencePolicy          = publishingResiliencePolicies.PublishedFundingRepository;
            _publishedFundingVersionRepository   = publishedFundingVersionRepository;
            _publishedFundingIdGeneratorResolver = publishedFundingIdGeneratorResolver;
            _logger = logger;
            _publishingEngineOptions = publishingEngineOptions;
            _publishedFundingVersionBulkRepository = publishedFundingVersionBulkRepository;
            _publishedFundingBulkRepository        = publishedFundingBulkRepository;
            _versionRepositoryPolicy = publishingResiliencePolicies.PublishedProviderVersionRepository;
        }
        public void SetUp()
        {
            ILogger        logger        = Substitute.For <ILogger>();
            IConfiguration configuration = Substitute.For <IConfiguration>();

            _publishedFundingBulkRepository        = Substitute.For <IPublishedFundingBulkRepository>();
            _publishedFundingVersionRepository     = Substitute.For <IVersionRepository <PublishedFundingVersion> >();
            _publishedFundingVersionBulkRepository = Substitute.For <IVersionBulkRepository <PublishedFundingVersion> >();
            _publishedFundingIdGeneratorResolver   = Substitute.For <IPublishedFundingIdGeneratorResolver>();
            _author = new Reference {
                Id = "authorId", Name = "author"
            };

            _publishedFundingStatusUpdateService = new PublishedFundingStatusUpdateService(PublishingResilienceTestHelper.GenerateTestPolicies(),
                                                                                           _publishedFundingVersionRepository,
                                                                                           _publishedFundingIdGeneratorResolver,
                                                                                           logger,
                                                                                           new PublishingEngineOptions(configuration),
                                                                                           _publishedFundingVersionBulkRepository,
                                                                                           _publishedFundingBulkRepository);

            _publishedFundingPeriod = new PublishedFundingPeriod {
                Type = PublishedFundingPeriodType.AY, Period = "123"
            };
        }
Esempio n. 3
0
        public void SaveVersions_GivenPublishedProviderResultsButSavingVersionsCausesExceptions_LogsAndThrows()
        {
            //Arrange
            IEnumerable <PublishedProvider> publishedProviders = new[]
            {
                new PublishedProvider
                {
                    Current = new PublishedProviderVersion()
                }
            };

            ILogger logger = CreateLogger();

            IVersionBulkRepository <PublishedProviderVersion> versionBulkRepository = CreateVersionBulkRepository();

            versionBulkRepository
            .When(x => x.SaveVersion(Arg.Any <PublishedProviderVersion>(), Arg.Any <string>()))
            .Do(x => { throw new Exception("Failed to save versions"); });

            PublishedProviderVersioningService service = CreateVersioningService(
                logger,
                versionBulkRepository: versionBulkRepository);

            //Act
            Func <Task> test = async() => await service.SaveVersions(publishedProviders);

            //Assert
            test
            .Should()
            .ThrowExactly <Exception>()
            .Which
            .Message
            .Should()
            .Be("Failed to save versions");
        }
Esempio n. 4
0
        private static PublishedProviderVersioningService CreateVersioningService(
            ILogger logger = null,
            IVersionRepository <PublishedProviderVersion> versionRepository         = null,
            IVersionBulkRepository <PublishedProviderVersion> versionBulkRepository = null)
        {
            IConfiguration configuration = Substitute.For <IConfiguration>();

            return(new PublishedProviderVersioningService(
                       logger ?? CreateLogger(),
                       versionRepository ?? CreateVersionRepository(),
                       PublishingResilienceTestHelper.GenerateTestPolicies(),
                       new PublishingEngineOptions(configuration),
                       versionBulkRepository ?? CreateVersionBulkRepository()));
        }
        public PublishedProviderVersioningService(
            ILogger logger,
            IVersionRepository <PublishedProviderVersion> versionRepository,
            IPublishingResiliencePolicies resiliencePolicies,
            IPublishingEngineOptions publishingEngineOptions,
            IVersionBulkRepository <PublishedProviderVersion> versionBulkRepository)
        {
            Guard.ArgumentNotNull(logger, nameof(logger));
            Guard.ArgumentNotNull(versionRepository, nameof(versionRepository));
            Guard.ArgumentNotNull(resiliencePolicies?.PublishedProviderVersionRepository, nameof(resiliencePolicies.PublishedProviderVersionRepository));
            Guard.ArgumentNotNull(publishingEngineOptions, nameof(publishingEngineOptions));
            Guard.ArgumentNotNull(versionBulkRepository, nameof(versionBulkRepository));

            _logger                  = logger;
            _versionRepository       = versionRepository;
            _publishingEngineOptions = publishingEngineOptions;
            _versionRepositoryPolicy = resiliencePolicies.PublishedProviderVersionRepository;
            _versionBulkRepository   = versionBulkRepository;
        }
 protected static ProcessDatasetService CreateProcessDatasetService(
     IBlobClient blobClient             = null,
     IMessengerService messengerService = null,
     ILogger logger = null,
     IDatasetRepository datasetRepository                        = null,
     IExcelDatasetReader excelDatasetReader                      = null,
     ICacheProvider cacheProvider                                = null,
     ICalcsRepository calcsRepository                            = null,
     IProvidersApiClient providersApiClient                      = null,
     ISpecificationsApiClient specificationsApiClient            = null,
     IProviderSourceDatasetsRepository providerResultsRepository = null,
     ITelemetry telemetry = null,
     IDatasetsResiliencePolicies datasetsResiliencePolicies         = null,
     IDatasetsAggregationsRepository datasetsAggregationsRepository = null,
     IFeatureToggle featureToggle = null,
     IMapper mapper = null,
     IJobManagement jobManagement = null,
     IProviderSourceDatasetVersionKeyProvider versionKeyProvider = null,
     IJobsApiClient jobsApiClient = null,
     IVersionBulkRepository <ProviderSourceDatasetVersion> versionBulkRepository = null,
     IProviderSourceDatasetBulkRepository providerSourceDatasetBulkRepository    = null)
 {
     return(new ProcessDatasetService(
                datasetRepository ?? CreateDatasetsRepository(),
                excelDatasetReader ?? CreateExcelDatasetReader(),
                cacheProvider ?? CreateCacheProvider(),
                calcsRepository ?? CreateCalcsRepository(),
                blobClient ?? CreateBlobClient(),
                messengerService ?? CreateMessengerService(),
                providerResultsRepository ?? CreateProviderResultsRepository(),
                providersApiClient ?? CreateProvidersApiClient(),
                specificationsApiClient ?? CreateSpecificationsApiClient(),
                logger ?? CreateLogger(),
                datasetsResiliencePolicies ?? DatasetsResilienceTestHelper.GenerateTestPolicies(),
                datasetsAggregationsRepository ?? CreateDatasetsAggregationsRepository(),
                featureToggle ?? CreateFeatureToggle(),
                mapper ?? CreateMapper(),
                jobManagement ?? CreateJobManagement(),
                versionKeyProvider ?? CreateDatasetVersionKeyProvider(),
                versionBulkRepository ?? new Mock <IVersionBulkRepository <ProviderSourceDatasetVersion> >().Object,
                providerSourceDatasetBulkRepository ?? new Mock <IProviderSourceDatasetBulkRepository>().Object));
 }
Esempio n. 7
0
        public async Task SaveVersions_GivenPublishedProviderResults_EnsuresSavesWithCorrectParameters()
        {
            //Arrange
            const string providerId      = "123";
            const string fundingPeriodId = "456";
            const string fundingStreamId = "789";

            string partitionKey = $"publishedprovider-{providerId}-{fundingPeriodId}-{fundingStreamId}";

            IEnumerable <PublishedProvider> publishedProviders = new[]
            {
                new PublishedProvider
                {
                    Current = new PublishedProviderVersion
                    {
                        ProviderId      = providerId,
                        FundingPeriodId = fundingPeriodId,
                        FundingStreamId = fundingStreamId
                    }
                }
            };

            ILogger logger = CreateLogger();

            IVersionBulkRepository <PublishedProviderVersion> versionBulkRepository = CreateVersionBulkRepository();

            PublishedProviderVersioningService service = CreateVersioningService(
                logger,
                versionBulkRepository: versionBulkRepository);

            //Act
            await service.SaveVersions(publishedProviders);

            //Assert
            await
            versionBulkRepository
            .Received(1)
            .SaveVersion(Arg.Is(publishedProviders.First().Current), Arg.Is(partitionKey));
        }