From 38b05bc7e3d641cf0edfa6291a340f1fbac12539 Mon Sep 17 00:00:00 2001 From: Ewout Kramer Date: Wed, 14 Feb 2024 11:15:35 +0100 Subject: [PATCH] Added better docs + test on ParseBindable for CodeableReference. --- .../TypedElementParseExtensions.cs | 2 ++ .../ParseExtensionsTests.cs | 26 ------------------ .../ParseExtensionsTests.cs | 26 ------------------ .../ParseExtensionsTests.cs | 27 +++++++++++++++++-- 4 files changed, 27 insertions(+), 54 deletions(-) delete mode 100644 src/Hl7.Fhir.ElementModel.R4B.Tests/ParseExtensionsTests.cs delete mode 100644 src/Hl7.Fhir.ElementModel.R5.Tests/ParseExtensionsTests.cs diff --git a/src/Hl7.Fhir.Base/ElementModel/TypedElementParseExtensions.cs b/src/Hl7.Fhir.Base/ElementModel/TypedElementParseExtensions.cs index a02a31d946..14889d90e2 100644 --- a/src/Hl7.Fhir.Base/ElementModel/TypedElementParseExtensions.cs +++ b/src/Hl7.Fhir.Base/ElementModel/TypedElementParseExtensions.cs @@ -34,12 +34,14 @@ public static class TypedElementParseExtensions /// 'Extension' => depends on value[x] /// 'string' => code /// 'uri' => code + /// 'CodeableReference' => CodeableConcept if 'concept' is present, otherwise null /// public static Element? ParseBindable(this ITypedElement instance) #pragma warning disable CS0618 // Type or member is obsolete => instance.ParseBindableInternal(); #pragma warning restore CS0618 // Type or member is obsolete + /// [Obsolete("WARNING! Intended for internal API usage exclusively, interface IBaseElementNavigator can be changed in " + "the near future.")] public static Element? ParseBindableInternal(this IBaseElementNavigator instance) where T : IBaseElementNavigator diff --git a/src/Hl7.Fhir.ElementModel.R4B.Tests/ParseExtensionsTests.cs b/src/Hl7.Fhir.ElementModel.R4B.Tests/ParseExtensionsTests.cs deleted file mode 100644 index 9e027fda75..0000000000 --- a/src/Hl7.Fhir.ElementModel.R4B.Tests/ParseExtensionsTests.cs +++ /dev/null @@ -1,26 +0,0 @@ -using FluentAssertions; -using Hl7.Fhir.ElementModel; -using Hl7.Fhir.Model; -using System.Collections.Generic; -using Xunit; - -namespace Hl7.Fhir.Validation -{ - public partial class ParseExtensionsTests - { - [Fact] - public void TestParseCodeableReference() - { - var i = new CodeableReference - { - Reference = new ResourceReference("http://example.org/fhir/Patient/1"), - Concept = new CodeableConcept("http://nu.nl", "bla") - }; - - var node = i.ToTypedElement(); - var p = node.ParseBindable(); - - p.Should().BeEquivalentTo(new { Coding = new List { new Coding("http://nu.nl", "bla") } }); - } - } -} diff --git a/src/Hl7.Fhir.ElementModel.R5.Tests/ParseExtensionsTests.cs b/src/Hl7.Fhir.ElementModel.R5.Tests/ParseExtensionsTests.cs deleted file mode 100644 index 09d07e2f66..0000000000 --- a/src/Hl7.Fhir.ElementModel.R5.Tests/ParseExtensionsTests.cs +++ /dev/null @@ -1,26 +0,0 @@ -using FluentAssertions; -using Hl7.Fhir.ElementModel; -using Hl7.Fhir.Model; -using System.Collections.Generic; -using Xunit; - -namespace Hl7.Fhir.Validation -{ - public partial class ParseExtensionsTests - { - [Fact] - public void TestParseCodeableReference() - { - var i = new CodeableReference - { - Reference = new ResourceReference("http://example.org/fhir/Patient/1"), - Concept = new CodeableConcept("http://nu.nl", "bla") - }; - - var node = i.ToTypedElement(); - var p = node.ParseBindable(); - - p.Should().BeEquivalentTo(new { Coding = new List { new Coding("http://nu.nl", "bla") } }); - } - } -} \ No newline at end of file diff --git a/src/Hl7.Fhir.ElementModel.Shared.Tests/ParseExtensionsTests.cs b/src/Hl7.Fhir.ElementModel.Shared.Tests/ParseExtensionsTests.cs index 71ee466d10..e8503bb24b 100644 --- a/src/Hl7.Fhir.ElementModel.Shared.Tests/ParseExtensionsTests.cs +++ b/src/Hl7.Fhir.ElementModel.Shared.Tests/ParseExtensionsTests.cs @@ -1,10 +1,13 @@ -using Hl7.Fhir.ElementModel; +using FluentAssertions; +using Hl7.Fhir.ElementModel; using Hl7.Fhir.Model; +using Hl7.Fhir.Specification.Terminology; +using System.Collections.Generic; using Xunit; namespace Hl7.Fhir.Validation { - public partial class ParseExtensionsTests + public class ParseExtensionsTests { [Fact] public void TestParseQuantity() @@ -131,5 +134,25 @@ public void TestParseUnbindable() var xe = node.ParseBindable(); Assert.Null(xe); } + + [Fact] + public void TestParseCodeableReference() + { + var i = new CodeableReference + { + Reference = new ResourceReference("http://example.org/fhir/Patient/1"), + Concept = new CodeableConcept("http://nu.nl", "bla") + }; + + var node = i.ToTypedElement(); + var p = node.ParseBindable(); + + p.Should().BeEquivalentTo(new { Coding = new List { new Coding("http://nu.nl", "bla") } }); + + i.Concept = null; + node = i.ToTypedElement(); + p = node.ParseBindable(); + p.Should().BeNull(); + } } }