public void GivenValidTemplate_WhenMergeObservation_ThenCorrectProcessorInvoked_Test() { var template = Substitute.For <IFhirTemplate>(); var lookup = Substitute.For <ILookupTemplate <IFhirTemplate> >(); lookup.GetTemplate("a").Returns(template); var observationGroup = Substitute.For <IObservationGroup>(); observationGroup.Name.Returns("a"); var p1 = Substitute.For <IFhirTemplateProcessor <IFhirTemplate, string> >(); p1.SupportedTemplateType.Returns(template.GetType()); p1.MergeObservation(null, null, null).ReturnsForAnyArgs("merge"); var processor = new TestFhirLookupTemplateProcessor(p1); var result = processor.MergeObservation(lookup, observationGroup, "data"); Assert.Equal("merge", result); _ = observationGroup.Received(1).Name; lookup.Received(1).GetTemplate("a"); template.Received(1).GetType(); p1.Received(1).MergeObservation(template, observationGroup, "data"); }
public void GivenTemplateWithNoMatchingProcessor_WhenMergeObservation_ThenNotSupportedExceptionThrown_Test() { var p1 = Substitute.For <IFhirTemplateProcessor <IFhirTemplate, string> >(); p1.SupportedTemplateType.Returns(typeof(IFhirTemplate)); var template = Substitute.For <IFhirTemplate>(); var lookup = Substitute.For <ILookupTemplate <IFhirTemplate> >(); lookup.GetTemplate("a").Returns(template); var observationGroup = Substitute.For <IObservationGroup>(); observationGroup.Name.Returns("a"); var processor = new TestFhirLookupTemplateProcessor(p1); var ex = Assert.Throws <NotSupportedException>(() => processor.MergeObservation(lookup, observationGroup, "data")); _ = observationGroup.Received(1).Name; lookup.Received(1).GetTemplate("a"); template.Received(1).GetType(); p1.DidNotReceiveWithAnyArgs().MergeObservation(null, null, null); }