public ProviderCalculationResultsReIndexerService(
            ILogger logger,
            ISearchRepository <ProviderCalculationResultsIndex> providerCalculationResultsSearchRepository,
            ISpecificationsApiClient specificationsApiClient,
            ICalculationResultsRepository resultsRepository,
            IResultsResiliencePolicies resiliencePolicies,
            IFeatureToggle featureToggle,
            IMessengerService messengerService)
        {
            Guard.ArgumentNotNull(logger, nameof(logger));
            Guard.ArgumentNotNull(providerCalculationResultsSearchRepository, nameof(providerCalculationResultsSearchRepository));
            Guard.ArgumentNotNull(specificationsApiClient, nameof(specificationsApiClient));
            Guard.ArgumentNotNull(resultsRepository, nameof(resultsRepository));
            Guard.ArgumentNotNull(resiliencePolicies?.ResultsRepository, nameof(resiliencePolicies.ResultsRepository));
            Guard.ArgumentNotNull(resiliencePolicies?.SpecificationsApiClient, nameof(resiliencePolicies.SpecificationsApiClient));
            Guard.ArgumentNotNull(resiliencePolicies?.ResultsSearchRepository, nameof(resiliencePolicies.ResultsSearchRepository));
            Guard.ArgumentNotNull(featureToggle, nameof(featureToggle));
            Guard.ArgumentNotNull(messengerService, nameof(messengerService));

            _logger = logger;
            _providerCalculationResultsSearchRepository = providerCalculationResultsSearchRepository;
            _specificationsApiClient       = specificationsApiClient;
            _resultsRepository             = resultsRepository;
            _resultsRepositoryPolicy       = resiliencePolicies.ResultsRepository;
            _specificationsApiClientPolicy = resiliencePolicies.SpecificationsApiClient;
            _resultsSearchRepositoryPolicy = resiliencePolicies.ResultsSearchRepository;
            _featureToggle    = featureToggle;
            _messengerService = messengerService;
        }
예제 #2
0
        public async Task QueueCsvGenerationMessages_GivenSpecificationSummariesFoundAndHasNewResults_CreatesNewMessage()
        {
            //Arrange
            IEnumerable <SpecModel.SpecificationSummary> specificationSummaries = new[]
            {
                new SpecModel.SpecificationSummary {
                    Id = specificationId
                }
            };

            ISpecificationsApiClient specificationsApiClient = CreateSpecificationsApiClient();

            specificationsApiClient
            .GetSpecificationSummaries()
            .Returns(new ApiResponse <IEnumerable <SpecModel.SpecificationSummary> >(HttpStatusCode.OK, specificationSummaries));

            ICalculationResultsRepository calculationResultsRepository = CreateResultsRepository();

            calculationResultsRepository
            .CheckHasNewResultsForSpecificationIdAndTime(
                Arg.Is(specificationId),
                Arg.Any <DateTimeOffset>())
            .Returns(true);

            ILogger logger = CreateLogger();

            IJobManagement jobManagement = CreateJobManagement();

            IBlobClient blobClient = CreateBlobClient();

            blobClient
            .DoesBlobExistAsync($"{CalculationResultsReportFilePrefix}-{specificationId}", CalcsResultsContainerName)
            .Returns(true);

            ResultsService resultsService = CreateResultsService(
                logger,
                specificationsApiClient: specificationsApiClient,
                resultsRepository: calculationResultsRepository,
                jobManagement: jobManagement,
                blobClient: blobClient);

            //Act
            await resultsService.QueueCsvGenerationMessages();

            //Assert
            await
            jobManagement
            .Received(1)
            .QueueJob(
                Arg.Is <JobCreateModel>(_ =>
                                        _.JobDefinitionId == JobConstants.DefinitionNames.GenerateCalcCsvResultsJob &&
                                        _.Properties["specification-id"] == specificationId));

            logger
            .Received()
            .Information($"Found new calculation results for specification id '{specificationId}'");
        }
 public PublishServiceAcceptanceStepContext(IFeatureManagerSnapshot featureManagerSnapshot,
                                            ICalculationsApiClient calculationsInMemoryClient,
                                            ICalculationResultsRepository calculationsInMemoryRepository,
                                            IProfilingApiClient profilingApiClient)
 {
     _featureManagerSnapshot        = featureManagerSnapshot;
     CalculationsInMemoryRepository = (CalculationInMemoryRepository)calculationsInMemoryRepository;
     CalculationsInMemoryClient     = (CalculationsInMemoryClient)calculationsInMemoryClient;
     ProfilingInMemoryClient        = (ProfilingInMemoryClient)profilingApiClient;
 }
예제 #4
0
        public CalculationResultsService(
            IPublishingResiliencePolicies resiliencePolicies,
            ICalculationResultsRepository calculationResultsRepository)
        {
            Guard.ArgumentNotNull(calculationResultsRepository, nameof(calculationResultsRepository));
            Guard.ArgumentNotNull(resiliencePolicies, nameof(resiliencePolicies));
            Guard.ArgumentNotNull(resiliencePolicies.CalculationResultsRepository, nameof(resiliencePolicies.CalculationResultsRepository));

            _calculationResultsRepository = calculationResultsRepository;
            _resultsRepositoryPolicy      = resiliencePolicies.CalculationResultsRepository;
        }
예제 #5
0
        public ResultsService(ILogger logger,
                              IFeatureToggle featureToggle,
                              ICalculationResultsRepository resultsRepository,
                              IMapper mapper,
                              ISearchRepository <ProviderIndex> searchRepository,
                              ITelemetry telemetry,
                              IProviderSourceDatasetRepository providerSourceDatasetRepository,
                              ISearchRepository <ProviderCalculationResultsIndex> calculationProviderResultsSearchRepository,
                              ISpecificationsRepository specificationsRepository,
                              IResultsResiliencePolicies resiliencePolicies,
                              IProviderImportMappingService providerImportMappingService,
                              ICacheProvider cacheProvider,
                              IMessengerService messengerService,
                              ICalculationsRepository calculationRepository,
                              IValidator <MasterProviderModel> masterProviderModelValidator,
                              IBlobClient blobClient)
        {
            Guard.ArgumentNotNull(resultsRepository, nameof(resultsRepository));
            Guard.ArgumentNotNull(mapper, nameof(mapper));
            Guard.ArgumentNotNull(searchRepository, nameof(searchRepository));
            Guard.ArgumentNotNull(telemetry, nameof(telemetry));
            Guard.ArgumentNotNull(providerSourceDatasetRepository, nameof(providerSourceDatasetRepository));
            Guard.ArgumentNotNull(calculationProviderResultsSearchRepository, nameof(calculationProviderResultsSearchRepository));
            Guard.ArgumentNotNull(specificationsRepository, nameof(specificationsRepository));
            Guard.ArgumentNotNull(resiliencePolicies, nameof(resiliencePolicies));
            Guard.ArgumentNotNull(providerImportMappingService, nameof(providerImportMappingService));
            Guard.ArgumentNotNull(cacheProvider, nameof(cacheProvider));
            Guard.ArgumentNotNull(messengerService, nameof(messengerService));
            Guard.ArgumentNotNull(calculationRepository, nameof(calculationRepository));
            Guard.ArgumentNotNull(masterProviderModelValidator, nameof(masterProviderModelValidator));
            Guard.ArgumentNotNull(featureToggle, nameof(featureToggle));
            Guard.ArgumentNotNull(blobClient, nameof(blobClient));

            _logger            = logger;
            _resultsRepository = resultsRepository;
            _mapper            = mapper;
            _searchRepository  = searchRepository;
            _telemetry         = telemetry;
            _providerSourceDatasetRepository            = providerSourceDatasetRepository;
            _calculationProviderResultsSearchRepository = calculationProviderResultsSearchRepository;
            _resultsRepositoryPolicy        = resiliencePolicies.ResultsRepository;
            _specificationsRepository       = specificationsRepository;
            _resultsSearchRepositoryPolicy  = resiliencePolicies.ResultsSearchRepository;
            _specificationsRepositoryPolicy = resiliencePolicies.SpecificationsRepository;
            _providerImportMappingService   = providerImportMappingService;
            _cacheProvider                = cacheProvider;
            _messengerService             = messengerService;
            _calculationRepository        = calculationRepository;
            _masterProviderModelValidator = masterProviderModelValidator;
            _calculationsRepositoryPolicy = resiliencePolicies.CalculationsRepository;
            _featureToggle                = featureToggle;
            _blobClient       = blobClient;
            _blobClientPolicy = resiliencePolicies.CsvBlobPolicy;
        }
예제 #6
0
        public async Task QueueCsvGenerationMessages_GivenSpecificationSummariesFoundButNoResults_DoesNotCreateNewMessages()
        {
            //Arrange
            IEnumerable <SpecModel.SpecificationSummary> specificationSummaries = new[]
            {
                new SpecModel.SpecificationSummary {
                    Id = "spec-1"
                }
            };

            ISpecificationsApiClient specificationsApiClient = CreateSpecificationsApiClient();

            specificationsApiClient
            .GetSpecificationSummaries()
            .Returns(new ApiResponse <IEnumerable <SpecModel.SpecificationSummary> >(HttpStatusCode.OK, specificationSummaries));

            ICalculationResultsRepository calculationResultsRepository = CreateResultsRepository();

            calculationResultsRepository
            .ProviderHasResultsBySpecificationId(
                Arg.Is("spec-1"))
            .Returns(false);

            IBlobClient blobClient = CreateBlobClient();

            blobClient
            .DoesBlobExistAsync($"{CalculationResultsReportFilePrefix}-spec-1", CalcsResultsContainerName)
            .Returns(false);

            ILogger logger = CreateLogger();

            IJobManagement jobManagement = CreateJobManagement();

            ResultsService resultsService = CreateResultsService(
                logger,
                specificationsApiClient: specificationsApiClient,
                resultsRepository: calculationResultsRepository,
                jobManagement: jobManagement,
                blobClient: blobClient);

            //Act
            await resultsService.QueueCsvGenerationMessages();

            //Assert
            await
            jobManagement
            .DidNotReceive()
            .QueueJob(Arg.Any <JobCreateModel>());

            logger
            .DidNotReceive()
            .Information($"Found new calculation results for specification id 'spec-1'");
        }
예제 #7
0
        public async Task QueueCsvGenerationMessages_GivenSpecificationSummariesFoundAndHasNewResults_CreatesNewMessage()
        {
            //Arrange
            IEnumerable <SpecificationSummary> specificationSummaries = new[]
            {
                new SpecificationSummary {
                    Id = "spec-1"
                }
            };

            ISpecificationsRepository specificationsRepository = CreateSpecificationsRepository();

            specificationsRepository
            .GetSpecificationSummaries()
            .Returns(specificationSummaries);

            ICalculationResultsRepository calculationResultsRepository = CreateResultsRepository();

            calculationResultsRepository
            .CheckHasNewResultsForSpecificationIdAndTimePeriod(
                Arg.Is("spec-1"),
                Arg.Any <DateTimeOffset>(),
                Arg.Any <DateTimeOffset>())
            .Returns(true);

            ILogger logger = CreateLogger();

            IMessengerService messengerService = CreateMessengerService();

            ResultsService resultsService = CreateResultsService(
                logger,
                specificationsRepository: specificationsRepository,
                resultsRepository: calculationResultsRepository,
                messengerService: messengerService);

            //Act
            await resultsService.QueueCsvGenerationMessages();

            //Assert
            await
            messengerService
            .Received(1)
            .SendToQueue(
                Arg.Is(ServiceBusConstants.QueueNames.CalculationResultsCsvGeneration),
                Arg.Is(string.Empty),
                Arg.Is <Dictionary <string, string> >(m => m["specification-id"] == "spec-1"), Arg.Is(false));

            logger
            .Received()
            .Information($"Found new calculation results for specification id 'spec-1'");
        }
 public MergeSpecificationsWithProviderResultsDocuments(ICosmosRepository cosmosRepository,
                                                        ILogger logger,
                                                        ISpecificationsApiClient specifications,
                                                        IProducerConsumerFactory producerConsumerFactory,
                                                        IResultsResiliencePolicies resultsResiliencePolicies,
                                                        IPoliciesApiClient policies,
                                                        ICalculationResultsRepository results)
 {
     _cosmosRepository        = cosmosRepository;
     _logger                  = logger;
     _specifications          = specifications;
     _producerConsumerFactory = producerConsumerFactory;
     _policies                = policies;
     _results                 = results;
     _policiesPolicy          = resultsResiliencePolicies.PoliciesApiClient;
 }
예제 #9
0
        public void SetUp()
        {
            _calculationResultsRepository = Substitute.For <ICalculationResultsRepository>();
            _blobClient              = Substitute.For <IBlobClient>();
            _csvUtils                = Substitute.For <ICsvUtils>();
            _transformation          = Substitute.For <IProviderResultsToCsvRowsTransformation>();
            _cloudBlob               = Substitute.For <ICloudBlob>();
            _fileSystemAccess        = Substitute.For <IFileSystemAccess>();
            _fileSystemCacheSettings = Substitute.For <IFileSystemCacheSettings>();
            _jobManagement           = Substitute.For <IJobManagement>();
            _calcsApiClient          = Substitute.For <ICalculationsApiClient>();
            _specsApiClient          = Substitute.For <ISpecificationsApiClient>();

            _service = new ProviderResultsCsvGeneratorService(Substitute.For <ILogger>(),
                                                              _blobClient,
                                                              _calcsApiClient,
                                                              _specsApiClient,
                                                              _calculationResultsRepository,
                                                              new ResiliencePolicies
            {
                BlobClient              = Policy.NoOpAsync(),
                CalculationsApiClient   = Policy.NoOpAsync(),
                SpecificationsApiClient = Policy.NoOpAsync(),
                ResultsRepository       = Policy.NoOpAsync()
            },
                                                              _csvUtils,
                                                              _transformation,
                                                              _fileSystemAccess,
                                                              _fileSystemCacheSettings,
                                                              _jobManagement);

            _message  = new Message();
            _rootPath = NewRandomString();

            _fileSystemCacheSettings.Path
            .Returns(_rootPath);

            _fileSystemAccess
            .Append(Arg.Any <string>(), Arg.Any <Stream>())
            .Returns(Task.CompletedTask);

            _blobProperties = new BlobProperties();

            _cloudBlob
            .Properties
            .Returns(_blobProperties);
        }
        public ResultsService(ILogger logger,
                              IFeatureToggle featureToggle,
                              ICalculationResultsRepository resultsRepository,
                              IProviderSourceDatasetRepository providerSourceDatasetRepository,
                              ISearchRepository <ProviderCalculationResultsIndex> calculationProviderResultsSearchRepository,
                              ISpecificationsApiClient specificationsApiClient,
                              ICalculationsApiClient calculationsApiClient,
                              IResultsResiliencePolicies resiliencePolicies,
                              ICalculationsRepository calculationRepository,
                              IMapper mapper,
                              IJobManagement jobManagement,
                              IBlobClient blobClient) : base(jobManagement, logger)
        {
            Guard.ArgumentNotNull(resultsRepository, nameof(resultsRepository));
            Guard.ArgumentNotNull(providerSourceDatasetRepository, nameof(providerSourceDatasetRepository));
            Guard.ArgumentNotNull(calculationProviderResultsSearchRepository, nameof(calculationProviderResultsSearchRepository));
            Guard.ArgumentNotNull(specificationsApiClient, nameof(specificationsApiClient));
            Guard.ArgumentNotNull(calculationsApiClient, nameof(calculationsApiClient));
            Guard.ArgumentNotNull(resiliencePolicies?.ResultsRepository, nameof(resiliencePolicies.ResultsRepository));
            Guard.ArgumentNotNull(resiliencePolicies?.ResultsSearchRepository, nameof(resiliencePolicies.ResultsSearchRepository));
            Guard.ArgumentNotNull(resiliencePolicies?.SpecificationsApiClient, nameof(resiliencePolicies.SpecificationsApiClient));
            Guard.ArgumentNotNull(resiliencePolicies?.CalculationsApiClient, nameof(resiliencePolicies.CalculationsApiClient));
            Guard.ArgumentNotNull(resiliencePolicies?.CalculationsRepository, nameof(resiliencePolicies.CalculationsRepository));
            Guard.ArgumentNotNull(resiliencePolicies?.BlobClient, nameof(resiliencePolicies.BlobClient));
            Guard.ArgumentNotNull(calculationRepository, nameof(calculationRepository));
            Guard.ArgumentNotNull(featureToggle, nameof(featureToggle));
            Guard.ArgumentNotNull(mapper, nameof(mapper));
            Guard.ArgumentNotNull(blobClient, nameof(blobClient));

            _logger            = logger;
            _mapper            = mapper;
            _resultsRepository = resultsRepository;
            _providerSourceDatasetRepository            = providerSourceDatasetRepository;
            _calculationProviderResultsSearchRepository = calculationProviderResultsSearchRepository;
            _resultsRepositoryPolicy       = resiliencePolicies.ResultsRepository;
            _specificationsApiClient       = specificationsApiClient;
            _calculationsApiClient         = calculationsApiClient;
            _resultsSearchRepositoryPolicy = resiliencePolicies.ResultsSearchRepository;
            _specificationsApiClientPolicy = resiliencePolicies.SpecificationsApiClient;
            _calculationsApiClientPolicy   = resiliencePolicies.CalculationsApiClient;
            _blobClientPolicy             = resiliencePolicies.BlobClient;
            _calculationRepository        = calculationRepository;
            _calculationsRepositoryPolicy = resiliencePolicies.CalculationsRepository;
            _featureToggle = featureToggle;
            _blobClient    = blobClient;
        }
        static PublishedResultsService CreateResultsService(ILogger logger       = null,
                                                            IMapper mapper       = null,
                                                            ITelemetry telemetry = null,
                                                            ICalculationResultsRepository resultsRepository    = null,
                                                            ISpecificationsRepository specificationsRepository = null,
                                                            IResultsResiliencePolicies resiliencePolicies      = null,
                                                            IPublishedProviderResultsAssemblerService publishedProviderResultsAssemblerService = null,
                                                            IPublishedProviderResultsRepository publishedProviderResultsRepository             = null,
                                                            ICacheProvider cacheProvider = null,
                                                            ISearchRepository <AllocationNotificationFeedIndex> allocationNotificationFeedSearchRepository = null,
                                                            IProfilingApiClient profilingApiClient = null,
                                                            IMessengerService messengerService     = null,
                                                            IVersionRepository <PublishedAllocationLineResultVersion> publishedProviderResultsVersionRepository    = null,
                                                            IPublishedAllocationLineLogicalResultVersionService publishedAllocationLineLogicalResultVersionService = null,
                                                            IFeatureToggle featureToggle = null,
                                                            IJobsApiClient jobsApiClient = null,
                                                            IPublishedProviderResultsSettings publishedProviderResultsSettings = null,
                                                            IProviderChangesRepository providerChangesRepository = null,
                                                            IProviderVariationsService providerVariationsService = null,
                                                            IProviderVariationsStorageRepository providerVariationsStorageRepository = null)
        {
            ISpecificationsRepository specsRepo = specificationsRepository ?? CreateSpecificationsRepository();

            return(new PublishedResultsService(
                       logger ?? CreateLogger(),
                       mapper ?? CreateMapper(),
                       telemetry ?? CreateTelemetry(),
                       resultsRepository ?? CreateResultsRepository(),
                       specsRepo,
                       resiliencePolicies ?? ResultsResilienceTestHelper.GenerateTestPolicies(),
                       publishedProviderResultsAssemblerService ?? CreateResultsAssembler(),
                       publishedProviderResultsRepository ?? CreatePublishedProviderResultsRepository(),
                       cacheProvider ?? CreateCacheProvider(),
                       allocationNotificationFeedSearchRepository ?? CreateAllocationNotificationFeedSearchRepository(),
                       profilingApiClient ?? CreateProfilingRepository(),
                       messengerService ?? CreateMessengerService(),
                       publishedProviderResultsVersionRepository ?? CreatePublishedProviderResultsVersionRepository(),
                       publishedAllocationLineLogicalResultVersionService ?? CreatePublishedAllocationLineLogicalResultVersionService(),
                       featureToggle ?? CreateFeatureToggle(),
                       jobsApiClient ?? CreateJobsApiClient(),
                       publishedProviderResultsSettings ?? CreatePublishedProviderResultsSettings(),
                       providerChangesRepository ?? CreateProviderChangesRepository(),
                       providerVariationsService ?? CreateProviderVariationsService(CreateProviderVariationAssemblerService(), specsRepo),
                       providerVariationsStorageRepository ?? CreateProviderVariationsStorageRepository()
                       ));
        }
        public ProviderResultsCsvGeneratorService(ILogger logger,
                                                  IBlobClient blobClient,
                                                  ICalculationsApiClient calculationsApiClient,
                                                  ISpecificationsApiClient specificationsApiClient,
                                                  ICalculationResultsRepository resultsRepository,
                                                  IResultsResiliencePolicies policies,
                                                  ICsvUtils csvUtils,
                                                  IProviderResultsToCsvRowsTransformation resultsToCsvRowsTransformation,
                                                  IFileSystemAccess fileSystemAccess,
                                                  IFileSystemCacheSettings fileSystemCacheSettings,
                                                  IJobManagement jobManagement) : base(jobManagement, logger)
        {
            Guard.ArgumentNotNull(logger, nameof(logger));
            Guard.ArgumentNotNull(blobClient, nameof(blobClient));
            Guard.ArgumentNotNull(specificationsApiClient, nameof(specificationsApiClient));
            Guard.ArgumentNotNull(calculationsApiClient, nameof(calculationsApiClient));
            Guard.ArgumentNotNull(resultsRepository, nameof(resultsRepository));
            Guard.ArgumentNotNull(resultsToCsvRowsTransformation, nameof(resultsToCsvRowsTransformation));
            Guard.ArgumentNotNull(fileSystemAccess, nameof(fileSystemAccess));
            Guard.ArgumentNotNull(policies?.BlobClient, nameof(policies.BlobClient));
            Guard.ArgumentNotNull(policies?.CalculationsApiClient, nameof(policies.CalculationsApiClient));
            Guard.ArgumentNotNull(policies?.SpecificationsApiClient, nameof(policies.SpecificationsApiClient));
            Guard.ArgumentNotNull(policies?.ResultsRepository, nameof(policies.ResultsRepository));
            Guard.ArgumentNotNull(fileSystemCacheSettings, nameof(fileSystemCacheSettings));
            Guard.ArgumentNotNull(jobManagement, nameof(jobManagement));

            _logger                         = logger;
            _blobClient                     = blobClient;
            _calculationsApiClient          = calculationsApiClient;
            _specificationsApiClient        = specificationsApiClient;
            _resultsRepository              = resultsRepository;
            _blobClientPolicy               = policies.BlobClient;
            _calculationsApiClientPolicy    = policies.CalculationsApiClient;
            _specificationsApiClientPolicy  = policies.SpecificationsApiClient;
            _resultsRepositoryPolicy        = policies.ResultsRepository;
            _csvUtils                       = csvUtils;
            _resultsToCsvRowsTransformation = resultsToCsvRowsTransformation;
            _fileSystemAccess               = fileSystemAccess;
            _fileSystemCacheSettings        = fileSystemCacheSettings;
            _jobManagement                  = jobManagement;
        }
예제 #13
0
        public SpecificationsWithProviderResultsService(ICalculationResultsRepository results,
                                                        IPoliciesApiClient policies,
                                                        IJobManagement jobs,
                                                        IProducerConsumerFactory producerConsumerFactory,
                                                        IResultsResiliencePolicies resiliencePolicies,
                                                        ILogger logger) : base(jobs, logger)
        {
            Guard.ArgumentNotNull(results, nameof(results));
            Guard.ArgumentNotNull(policies, nameof(policies));
            Guard.ArgumentNotNull(resiliencePolicies?.CalculationProviderResultsSearchRepository, nameof(resiliencePolicies.CalculationProviderResultsSearchRepository));
            Guard.ArgumentNotNull(resiliencePolicies?.JobsApiClient, nameof(resiliencePolicies.JobsApiClient));
            Guard.ArgumentNotNull(resiliencePolicies?.PoliciesApiClient, nameof(resiliencePolicies.PoliciesApiClient));
            Guard.ArgumentNotNull(logger, nameof(logger));

            _results = results;
            _jobs    = jobs;
            _producerConsumerFactory = producerConsumerFactory;
            _resultsPolicy           = resiliencePolicies.CalculationProviderResultsSearchRepository;
            _jobsPolicy     = resiliencePolicies.JobsApiClient;
            _policiesPolicy = resiliencePolicies.PoliciesApiClient;
            _logger         = logger;
            _policies       = policies;
        }
        public void ReIndexCalculationResults_GivenResultReturnedFromDatabaseWithTwoCalcResultsButSearchReturnsErrors_ThrowsRetriableException()
        {
            //Arrange
            const string expectedErrorMessage = "Failed to index calculation provider result documents with errors: an error";

            Message message = new Message();

            message.UserProperties["user-id"]   = "123";
            message.UserProperties["user-name"] = "Joe Bloggs";

            ProviderResult providerResult = CreateProviderResult();

            ISearchRepository <ProviderCalculationResultsIndex> searchRepository = CreateSearchRepository();

            searchRepository
            .Index(Arg.Any <IEnumerable <ProviderCalculationResultsIndex> >())
            .Returns(new[] { new IndexError {
                                 ErrorMessage = "an error"
                             } });

            ICalculationResultsRepository calculationResultsRepository = CreateCalculationResultsRepository();

            calculationResultsRepository
            .WhenForAnyArgs(x => x.ProviderResultsBatchProcessing(default, default)).Do(x =>
 public ProviderCalculationResultsIndexDataReader(ICalculationResultsRepository calculationResultsRepository)
 {
     Guard.ArgumentNotNull(calculationResultsRepository, nameof(calculationResultsRepository));
     _calculationResultsRepository = calculationResultsRepository;
 }
예제 #16
0
 public void Setup()
 {
     _repository = Substitute.For <ICalculationResultsRepository>();
     _reader     = new ProviderCalculationResultsIndexDataReader(_repository);
 }