public void GivenInputWithRegisteredFactories_WhenCreate_ThenTemplateReturned_Test(string json) { IFhirTemplate nullReturn = null; var templateA = Substitute.For <IFhirTemplate>(); templateA.TypeName.Returns("A"); var templateB = Substitute.For <IFhirTemplate>(); templateB.TypeName.Returns("B"); var factoryA = Substitute.For <ITemplateFactory <TemplateContainer, IFhirTemplate> >(); factoryA.Create(Arg.Is <TemplateContainer>(v => v.MatchTemplateName("mockA"))).Returns(templateA); factoryA.Create(Arg.Is <TemplateContainer>(v => !v.MatchTemplateName("mockA"))).Returns(nullReturn); var factoryB = Substitute.For <ITemplateFactory <TemplateContainer, IFhirTemplate> >(); factoryB.Create(Arg.Is <TemplateContainer>(v => v.MatchTemplateName("mockB"))).Returns(templateB); factoryB.Create(Arg.Is <TemplateContainer>(v => !v.MatchTemplateName("mockB"))).Returns(nullReturn); var factory = new CollectionFhirTemplateFactory(factoryA, factoryB); var templateContext = factory.Create(json); Assert.NotNull(templateContext); templateContext.EnsureValid(); factoryA.ReceivedWithAnyArgs().Create(null); factoryB.ReceivedWithAnyArgs().Create(null); }
public void GivenInputWithUnregisteredFactories_WhenCreate_ThenException_Test(string json) { IFhirTemplate nullReturn = null; var templateA = Substitute.For <IFhirTemplate>(); templateA.TypeName.Returns("A"); var templateC = Substitute.For <IFhirTemplate>(); templateC.TypeName.Returns("C"); var factoryA = Substitute.For <ITemplateFactory <TemplateContainer, IFhirTemplate> >(); factoryA.Create(Arg.Is <TemplateContainer>(v => v.MatchTemplateName("mockA"))).Returns(templateA); factoryA.Create(Arg.Is <TemplateContainer>(v => !v.MatchTemplateName("mockA"))).Returns(nullReturn); var factoryC = Substitute.For <ITemplateFactory <TemplateContainer, IFhirTemplate> >(); factoryC.Create(Arg.Is <TemplateContainer>(v => v.MatchTemplateName("mockC"))).Returns(templateC); factoryC.Create(Arg.Is <TemplateContainer>(v => !v.MatchTemplateName("mockC"))).Returns(nullReturn); var factory = new CollectionFhirTemplateFactory(factoryA, factoryC); var templateContext = factory.Create(json); Assert.Throws <ValidationException>(() => templateContext.EnsureValid()); Assert.False(templateContext.IsValid(out _)); factoryA.ReceivedWithAnyArgs().Create(null); factoryC.ReceivedWithAnyArgs().Create(null); }
private TTemplate CastTemplate(IFhirTemplate template) { EnsureArg.IsNotNull(template, nameof(template)); if (!(template is TTemplate castTemplate)) { throw new NotSupportedException($"Template type {template.GetType()} does not match supported type {SupportedTemplateType}."); } return(castTemplate); }
public TObservation MergeObservation(IFhirTemplate template, IObservationGroup observationGroup, TObservation existingObservation) { return(MergeObservationImpl(CastTemplate(template), observationGroup, existingObservation)); }
public IEnumerable <IObservationGroup> CreateObservationGroups(IFhirTemplate template, IMeasurementGroup measurementGroup) { return(CreateObservationGroupsImpl(CastTemplate(template), measurementGroup)); }
public TObservation CreateObservation(IFhirTemplate template, IObservationGroup observationGroup) { return(CreateObservationImpl(CastTemplate(template), observationGroup)); }