public void GivenAConformanceBuilder_WhenExecutingScalar_ThenCorrectInformationIsReturned() { string httpMicrosoftCom = "http://microsoft.com"; _builder.Update(x => x.Url = new Uri(httpMicrosoftCom)); ITypedElement statement = _builder.Build(); object url = statement.Scalar("Resource.url"); Assert.Equal(httpMicrosoftCom, url); }
public void GivenAConformanceBuilder_WhenVersionofResourceIsDifferentFromDefault_ThenResourceUsesResourceSpecificVersionLogic() { IOptions <CoreFeatureConfiguration> configuration = Substitute.For <IOptions <CoreFeatureConfiguration> >(); Dictionary <string, string> overrides = new(); VersioningConfiguration versionConfig = new(); versionConfig.ResourceTypeOverrides.Add("Patient", "no-version"); configuration.Value.Returns(new CoreFeatureConfiguration() { Versioning = versionConfig }); var supportedProfiles = Substitute.For <IKnowSupportedProfiles>(); var builder = CapabilityStatementBuilder.Create( ModelInfoProvider.Instance, _searchParameterDefinitionManager, configuration, supportedProfiles); ICapabilityStatementBuilder capabilityStatement = builder.ApplyToResource("Patient", c => { c.Interaction.Add(new ResourceInteractionComponent { Code = "create", }); }); ITypedElement resource = capabilityStatement.Build(); var patientResource = ((CapabilityStatement)resource.ToPoco()).Rest.First().Resource.First(); Assert.True(patientResource.Type == ResourceType.Patient); Assert.True(patientResource.Versioning == CapabilityStatement.ResourceVersionPolicy.NoVersion); }
public override async Task <ResourceElement> GetCapabilityStatementOnStartup(CancellationToken cancellationToken = default(CancellationToken)) { if (_listedCapabilityStatement == null) { await _defaultCapabilitySemaphore.WaitAsync(cancellationToken); try { if (_listedCapabilityStatement == null) { _builder = CapabilityStatementBuilder.Create(_modelInfoProvider, _searchParameterDefinitionManager, _supportedProfiles) .Apply(x => { x.FhirVersion = _modelInfoProvider.SupportedVersion.ToString(); x.Software = new SoftwareComponent { Name = Resources.ServerName, Version = Assembly.GetExecutingAssembly().GetName().Version.ToString(), }; }); using (IScoped <IEnumerable <IProvideCapability> > providerFactory = _capabilityProviders()) { foreach (IProvideCapability provider in providerFactory.Value) { provider.Build(_builder); } } foreach (Action <ListedCapabilityStatement> postConfiguration in _configurationUpdates) { _builder.Apply(statement => postConfiguration(statement)); } _listedCapabilityStatement = _builder.Build().ToResourceElement(); } } finally { _configurationUpdates.Clear(); _defaultCapabilitySemaphore.Release(); } } return(_listedCapabilityStatement); }
public override async Task <ResourceElement> GetMetadata(CancellationToken cancellationToken = default) { await _metadataSemaphore.WaitAsync(cancellationToken); try { if (_metadata == null) { _ = await GetCapabilityStatementOnStartup(cancellationToken); _metadata = _builder.Build().ToResourceElement(); } return(_metadata); } finally { _metadataSemaphore.Release(); } }
public override async Task <ResourceElement> GetCapabilityStatementOnStartup(CancellationToken cancellationToken = default(CancellationToken)) { if (_listedCapabilityStatement == null) { await _defaultCapabilitySemaphore.WaitAsync(cancellationToken); try { if (_listedCapabilityStatement == null) { _builder = CapabilityStatementBuilder.Create(_modelInfoProvider, _searchParameterDefinitionManager, _configuration, _supportedProfiles); using (IScoped <IEnumerable <IProvideCapability> > providerFactory = _capabilityProviders()) { foreach (IProvideCapability provider in providerFactory.Value) { provider.Build(_builder); } } foreach (Action <ListedCapabilityStatement> postConfiguration in _configurationUpdates) { _builder.Apply(statement => postConfiguration(statement)); } _listedCapabilityStatement = _builder.Build().ToResourceElement(); } } finally { _configurationUpdates.Clear(); _defaultCapabilitySemaphore.Release(); } } return(_listedCapabilityStatement); }