private ICapabilityStatementBuilder SyncProfile(string resourceType, bool disableCacheRefresh) { EnsureArg.IsNotNullOrEmpty(resourceType, nameof(resourceType)); EnsureArg.IsTrue(_modelInfoProvider.IsKnownResource(resourceType), nameof(resourceType), x => GenerateTypeErrorMessage(x, resourceType)); ApplyToResource(resourceType, resourceComponent => { var supportedProfiles = _supportedProfiles.GetSupportedProfiles(resourceType, disableCacheRefresh); if (supportedProfiles != null) { if (!_modelInfoProvider.Version.Equals(FhirSpecification.Stu3)) { resourceComponent.SupportedProfile.Clear(); foreach (var profile in supportedProfiles) { resourceComponent.SupportedProfile.Add(profile); } } else { foreach (var profile in supportedProfiles) { _statement.Profile.Add(new ReferenceComponent { Reference = profile, }); } } } }); return(this); }
public void GivenAConformanceBuilder_WhenAddingSupportedProfile_ThenSupportedProfilePresent() { string profile = "coolProfile"; _supportedProfiles.GetSupportedProfiles("Account").Returns(new[] { profile }); _builder.PopulateDefaultResourceInteractions().SyncProfiles(); ITypedElement statement = _builder.Build(); string fhirPath = ModelInfoProvider.Version == FhirSpecification.Stu3 ? $"CapabilityStatement.profile.where(reference='{profile}').exists()" : $"{ResourceQuery("Account")}.supportedProfile.first()='{profile}'"; var profileFound = (bool)statement.Scalar(fhirPath); Assert.True(profileFound); }