public void GenerateContents_GivenValidPublishedProviderVersion_ReturnsValidJson() { //Arrange ILogger logger = CreateLogger(); ITemplateMetadataGenerator templateMetaDataGenerator = CreateTemplateGenerator(logger); TemplateMetadataContents contents = templateMetaDataGenerator.GetMetadata(GetResourceString("CalculateFunding.Generators.Schema10.UnitTests.Resources.exampleProviderTemplate1.json")); PublishedProviderContentsGenerator publishedProviderContentsGenerator = new PublishedProviderContentsGenerator(); //Act string publishedcontents = publishedProviderContentsGenerator.GenerateContents(GetProviderVersion(), contents, GetTemplateMapping()); //Assert string expectedOutput = GetResourceString("CalculateFunding.Generators.Schema10.UnitTests.Resources.exampleProviderOutput1.json").Prettify(); publishedcontents .Prettify() .Should() .Be(expectedOutput); }
public void SetUp() { _generator = new PublishedProviderContentsGenerator(); }
public void SetupStepContexts() { PublishingResiliencePolicies publishingResiliencePolicies = new PublishingResiliencePolicies() { BlobClient = Policy.NoOpAsync(), CalculationsApiClient = Policy.NoOpAsync(), FundingFeedSearchRepository = Policy.NoOpAsync(), JobsApiClient = Policy.NoOpAsync(), PoliciesApiClient = Policy.NoOpAsync(), ProfilingApiClient = Policy.NoOpAsync(), ProvidersApiClient = Policy.NoOpAsync(), PublishedFundingBlobRepository = Policy.NoOpAsync(), PublishedFundingRepository = Policy.NoOpAsync(), PublishedProviderVersionRepository = Policy.NoOpAsync(), CalculationResultsRepository = Policy.NoOpAsync(), SpecificationsRepositoryPolicy = Policy.NoOpAsync(), SpecificationsApiClient = Policy.NoOpAsync(), PublishedProviderSearchRepository = Policy.NoOpAsync(), PublishedIndexSearchResiliencePolicy = Policy.NoOpAsync(), CacheProvider = Policy.NoOpAsync() }; RegisterInstanceAs <ILogger>(new LoggerConfiguration().CreateLogger()); RegisterInstanceAs <IPublishingResiliencePolicies>(publishingResiliencePolicies); RegisterInstanceAs <IConfiguration>(new ConfigurationBuilder().Build()); RegisterTypeAs <InMemoryBlobClient, IBlobClient>(); RegisterTypeAs <InMemoryAzureBlobClient, Services.Core.Interfaces.AzureStorage.IBlobClient>(); RegisterTypeAs <InMemoryCosmosRepository, ICosmosRepository>(); RegisterTypeAs <SpecificationInMemoryRepository, ISpecificationService>(); RegisterTypeAs <JobsInMemoryRepository, IJobsApiClient>(); RegisterTypeAs <InMemoryFeatureManagerSnapshot, IFeatureManagerSnapshot>(); RegisterTypeAs <PublishedProviderInMemorySearchRepository, ISearchRepository <PublishedProviderIndex> >(); RegisterTypeAs <ReApplyCustomProfiles, IReApplyCustomProfiles>(); RegisterTypeAs <ReProfilingResponseMapper, IReProfilingResponseMapper>(); RegisterTypeAs <ReProfilingRequestBuilder, IReProfilingRequestBuilder>(); IMapper mapper = new MapperConfiguration(c => { c.AddProfile <PublishingServiceMappingProfile>(); }).CreateMapper(); RegisterInstanceAs(mapper); JobManagementResiliencePolicies jobManagementResiliencePolicies = new JobManagementResiliencePolicies() { JobsApiClient = Policy.NoOpAsync(), }; RegisterInstanceAs <IJobManagementResiliencePolicies>(jobManagementResiliencePolicies); RegisterTypeAs <JobTracker, IJobTracker>(); RegisterTypeAs <JobManagement, IJobManagement>(); RegisterTypeAs <InMemoryPublishedFundingRepository, IPublishedFundingRepository>(); RegisterTypeAs <InMemoryPublishedFundingBulkRepository, IPublishedFundingBulkRepository>(); RegisterTypeAs <PoliciesInMemoryRepository, IPoliciesApiClient>(); RegisterTypeAs <InMemoryCacheProvider, ICacheProvider>(); RegisterTypeAs <InMemoryMessengerService, IMessengerService>(); ProvidersInMemoryClient providersInMemoryClient = new ProvidersInMemoryClient(mapper); RegisterInstanceAs <IProvidersApiClient>(providersInMemoryClient); RegisterTypeAs <ProviderService, IProviderService>(); RegisterTypeAs <PublishedFundingService, IPublishedFundingService>(); RegisterTypeAs <PoliciesService, IPoliciesService>(); RegisterTypeAs <VariationService, IVariationService>(); RegisterTypeAs <PublishedFundingDateService, IPublishedFundingDateService>(); RegisterTypeAs <PublishServiceAcceptanceStepContext, IPublishFundingStepContext>(); RegisterTypeAs <CurrentSpecificationStepContext, ICurrentSpecificationStepContext>(); RegisterTypeAs <JobStepContext, IJobStepContext>(); RegisterTypeAs <CurrentJobStepContext, ICurrentJobStepContext>(); RegisterTypeAs <PublishedFundingRepositoryStepContext, IPublishedFundingRepositoryStepContext>(); RegisterTypeAs <PoliciesStepContext, IPoliciesStepContext>(); RegisterTypeAs <LoggerStepContext, ILoggerStepContext>(); RegisterTypeAs <ProvidersStepContext, IProvidersStepContext>(); RegisterTypeAs <PublishingDatesStepContext, IPublishingDatesStepContext>(); RegisterTypeAs <PublishedFundingResultStepContext, IPublishedFundingResultStepContext>(); RegisterTypeAs <PublishedProviderStepContext, IPublishedProviderStepContext>(); RegisterTypeAs <ProfilingService, IProfilingService>(); RegisterTypeAs <ProfilingInMemoryClient, IProfilingApiClient>(); RegisterTypeAs <FDZInMemoryClient, IFundingDataZoneApiClient>(); RegisterTypeAs <PublishedFundingDataService, IPublishedFundingDataService>(); RegisterTypeAs <PublishedFundingVersionDataService, IPublishedFundingVersionDataService>(); RegisterTypeAs <CalculationResultsService, ICalculationResultsService>(); RegisterTypeAs <PublishingEngineOptions, IPublishingEngineOptions>(); RegisterTypeAs <PublishedProviderVersionInMemoryRepository, IVersionRepository <PublishedProviderVersion> >(); RegisterTypeAs <PublishedProviderVersionBulkInMemoryRepository, IVersionBulkRepository <PublishedProviderVersion> >(); RegisterTypeAs <PublishedFundingVersionInMemoryRepository, IVersionRepository <PublishedFundingVersion> >(); RegisterTypeAs <PublishedFundingVersionBulkInMemoryRepository, IVersionBulkRepository <PublishedFundingVersion> >(); RegisterTypeAs <PublishedProviderDataGenerator, IPublishedProviderDataGenerator>(); RegisterTypeAs <PublishedFundingStatusUpdateService, IPublishedFundingStatusUpdateService>(); RegisterTypeAs <SpecificationFundingStatusService, ISpecificationFundingStatusService>(); RegisterTypeAs <OrganisationGroupGenerator, IOrganisationGroupGenerator>(); RegisterTypeAs <PublishedFundingChangeDetectorService, IPublishedFundingChangeDetectorService>(); RegisterTypeAs <PublishedProviderVersionService, IPublishedProviderVersionService>(); RegisterTypeAs <PublishedFundingInMemorySearchRepository, ISearchRepository <PublishedFundingIndex> >(); RegisterTypeAs <GeneratePublishedFundingCsvJobCreation, ICreateGeneratePublishedFundingCsvJobs>(); RegisterTypeAs <CreateGeneratePublishedProviderEstateCsvJobs, ICreateGeneratePublishedProviderEstateCsvJobs>(); RegisterTypeAs <PublishIntegrityCheckJobCreation, ICreatePublishIntegrityJob>(); RegisterTypeAs <CurrentCorrelationStepContext, ICurrentCorrelationStepContext>(); IGeneratePublishedFundingCsvJobsCreation[] generatePublishedFundingCsvJobsCreations = typeof(IGeneratePublishedFundingCsvJobsCreation).Assembly.GetTypes() .Where(_ => _.Implements(typeof(IGeneratePublishedFundingCsvJobsCreation)) && !_.IsAbstract) .Select(_ => (IGeneratePublishedFundingCsvJobsCreation)Activator.CreateInstance(_, ResolveInstance <ICreateGeneratePublishedFundingCsvJobs>(), ResolveInstance <ICreateGeneratePublishedProviderEstateCsvJobs>())) .ToArray(); RegisterInstanceAs <IGeneratePublishedFundingCsvJobsCreationLocator>(new GeneratePublishedFundingCsvJobsCreationLocator(generatePublishedFundingCsvJobsCreations)); RegisterInstanceAs <IOrganisationGroupResiliencePolicies>(new OrganisationGroupResiliencePolicies { ProvidersApiClient = Policy.NoOpAsync() }); RegisterTypeAs <OrganisationGroupTargetProviderLookup, IOrganisationGroupTargetProviderLookup>(); IDetectPublishedProviderErrors[] detectorStrategies = typeof(PublishedProviderErrorDetector).Assembly.GetTypes() .Where(_ => _.Implements(typeof(PublishedProviderErrorDetector))) .Select(_ => (PublishedProviderErrorDetector)_objectContainer.Resolve(_)) .ToArray(); RegisterInstanceAs <IErrorDetectionStrategyLocator>(new ErrorDetectionStrategyLocator(detectorStrategies)); RegisterTypeAs <PublishedProviderErrorDetection, IPublishedProviderErrorDetection>(); PublishedProviderContentsGeneratorResolver providerContentsGeneratorResolver = new PublishedProviderContentsGeneratorResolver(); providerContentsGeneratorResolver.Register("1.0", new PublishedProviderContentsGenerator()); RegisterInstanceAs <IPublishedProviderContentsGeneratorResolver>(providerContentsGeneratorResolver); RegisterTypeAs <FundingLineTotalAggregator, IFundingLineTotalAggregator>(); RegisterTypeAs <CalculationInMemoryRepository, ICalculationResultsRepository>(); RegisterTypeAs <PublishedProviderStatusUpdateService, IPublishedProviderStatusUpdateService>(); RegisterTypeAs <PublishedProviderStatusUpdateSettings, IPublishedProviderStatusUpdateSettings>(); IVariationStrategy[] variationStrategies = typeof(IVariationStrategy).Assembly.GetTypes() .Where(_ => _.Implements(typeof(IVariationStrategy))) .Select(_ => (IVariationStrategy)_objectContainer.Resolve(_)) .ToArray(); RegisterInstanceAs <IVariationStrategyServiceLocator>(new VariationStrategyServiceLocator(variationStrategies)); RegisterTypeAs <ProviderVariationsDetection, IDetectProviderVariations>(); RegisterTypeAs <SpecificationsInMemoryClient, ISpecificationsApiClient>(); RegisterTypeAs <ProviderVariationsApplication, IApplyProviderVariations>(); RegisterTypeAs <VariationServiceStepContext, IVariationServiceStepContext>(); RegisterTypeAs <CalculationsInMemoryClient, ICalculationsApiClient>(); RegisterTypeAs <CalculationPrerequisiteCheckerService, ICalculationPrerequisiteCheckerService>(); RegisterTypeAs <JobsRunning, IJobsRunning>(); RegisterTypeAs <SpecificationFundingStatusService, ISpecificationFundingStatusService>(); RegisterTypeAs <CalculationPrerequisiteCheckerService, ICalculationPrerequisiteCheckerService>(); RegisterTypeAs <RefreshPrerequisiteChecker, IPrerequisiteChecker>(); RegisterTypeAs <PublishAllPrerequisiteChecker, IPrerequisiteChecker>(); RegisterTypeAs <PublishBatchPrerequisiteChecker, IPrerequisiteChecker>(); RegisterTypeAs <ApproveAllProvidersPrerequisiteChecker, IPrerequisiteChecker>(); RegisterTypeAs <ApproveBatchProvidersPrerequisiteChecker, IPrerequisiteChecker>(); IPrerequisiteChecker[] prerequisiteCheckers = typeof(IPrerequisiteChecker).Assembly.GetTypes() .Where(_ => _.Implements(typeof(IPrerequisiteChecker))) .Select(_ => (IPrerequisiteChecker)_objectContainer.Resolve(_)) .ToArray(); RegisterInstanceAs <IPrerequisiteCheckerLocator>(new PrerequisiteCheckerLocator(prerequisiteCheckers)); RegisterTypeAs <GenerateCsvJobsInMemoryClient, IGeneratePublishedFundingCsvJobsCreation>(); PublishedFundingIdGeneratorResolver idGeneratorResolver = new PublishedFundingIdGeneratorResolver(); idGeneratorResolver.Register("1.0", new PublishedFundingIdGenerator()); RegisterTypeAs <PublishedFundingGenerator, IPublishedFundingGenerator>(); RegisterInstanceAs <IPublishedFundingIdGeneratorResolver>(idGeneratorResolver); PublishedProviderContentsGeneratorResolver publishedProviderContentsGeneratorResolver = new PublishedProviderContentsGeneratorResolver(); IPublishedProviderContentsGenerator v10ProviderGenerator = new PublishedProviderContentsGenerator(); publishedProviderContentsGeneratorResolver.Register("1.0", v10ProviderGenerator); RegisterInstanceAs <IPublishedProviderContentsGeneratorResolver>(publishedProviderContentsGeneratorResolver); PublishedFundingContentsGeneratorResolver publishedFundingContentsGeneratorResolver = new PublishedFundingContentsGeneratorResolver(); IPublishedFundingContentsGenerator v10Generator = new PublishedFundingContentsGenerator(); publishedFundingContentsGeneratorResolver.Register("1.0", v10Generator); RegisterInstanceAs <IPublishedFundingContentsGeneratorResolver>(publishedFundingContentsGeneratorResolver); RegisterTypeAs <TransactionFactory, ITransactionFactory>(); RegisterInstanceAs <ITransactionResiliencePolicies>(new TransactionResiliencePolicies { TransactionPolicy = Policy.NoOpAsync() }); RegisterTypeAs <PublishedProviderIndexerService, IPublishedProviderIndexerService>(); RegisterTypeAs <FundingLineValueOverride, IFundingLineValueOverride>(); RegisterTypeAs <PublishedProviderDataPopulator, IPublishedProviderDataPopulator>(); RegisterTypeAs <PublishedProviderExclusionCheck, IPublishProviderExclusionCheck>(); RegisterTypeAs <PublishedProviderVersioningService, IPublishedProviderVersioningService>(); RegisterTypeAs <PublishedProviderContentPersistanceService, IPublishedProviderContentPersistanceService>(); RegisterTypeAs <PublishedFundingContentsPersistanceService, IPublishedFundingContentsPersistanceService>(); RegisterTypeAs <VariationErrorRecorder, IRecordVariationErrors>(); RegisterTypeAs <RefreshService, IRefreshService>(); RegisterTypeAs <ApproveService, IApproveService>(); RegisterTypeAs <PublishService, IPublishService>(); RegisterInstanceAs <IBatchProfilingOptions>(new BatchProfilingOptions(new ConfigurationStub())); RegisterTypeAs <BatchProfilingService, IBatchProfilingService>(); RegisterTypeAs <ProducerConsumerFactory, IProducerConsumerFactory>(); RegisterInstanceAs <IFundingLineRoundingSettings>(new RoundingSettingsStub()); }