Skip to content

Commit d748cc7

Browse files
committed
added tests
1 parent aada9f1 commit d748cc7

File tree

1 file changed

+118
-0
lines changed

1 file changed

+118
-0
lines changed

src/Hl7.Fhir.Specification.Shared.Tests/Terminology/SharedExpansionTests.cs

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,5 +113,123 @@ public async Tasks.Task TestExpandingVsWithUnknownSystem()
113113
var job = async () => await expander.ExpandAsync(vs);
114114
await job.Should().ThrowAsync<ValueSetUnknownException>().WithMessage("The ValueSet expander cannot find codesystem 'http://www.unknown.org/', so the expansion cannot be completed.");
115115
}
116+
117+
[Fact]
118+
public async Tasks.Task TestExcludingOnlyParent()
119+
{
120+
var resolver = new InMemoryResourceResolver();
121+
var vs = new ValueSet
122+
{
123+
Compose = new()
124+
{
125+
Include = new List<ValueSet.ConceptSetComponent>
126+
{
127+
new()
128+
{
129+
System = "http://www.unknown.org/",
130+
Filter = new List<ValueSet.FilterComponent>
131+
{
132+
new()
133+
{
134+
Property = "concept",
135+
Op = FilterOperator.IsA,
136+
Value = "parent"
137+
}
138+
}
139+
}
140+
},
141+
Exclude = new List<ValueSet.ConceptSetComponent>
142+
{
143+
new()
144+
{
145+
System = "http://www.unknown.org/",
146+
Concept = new List<ValueSet.ConceptReferenceComponent>
147+
{
148+
new()
149+
{
150+
Code = "parent"
151+
}
152+
}
153+
}
154+
}
155+
}
156+
};
157+
158+
var cs = new CodeSystem
159+
{
160+
Url = "http://www.unknown.org/",
161+
Content = CodeSystemContentMode.Complete,
162+
Concept = new List<CodeSystem.ConceptDefinitionComponent>
163+
{
164+
new()
165+
{
166+
Code = "parent",
167+
Concept = new List<CodeSystem.ConceptDefinitionComponent>
168+
{
169+
new()
170+
{
171+
Code = "child1"
172+
},
173+
new()
174+
{
175+
Code = "child2"
176+
}
177+
}
178+
}
179+
}
180+
};
181+
182+
resolver.Add(cs, vs);
183+
184+
var expander = new ValueSetExpander(new ValueSetExpanderSettings { ValueSetSource = resolver });
185+
await expander.ExpandAsync(vs);
186+
vs.Expansion.Contains.Select(c => c.Code).Should().BeEquivalentTo(["child1", "child2"]);
187+
188+
189+
vs.Compose.Exclude = new List<ValueSet.ConceptSetComponent>
190+
{
191+
new()
192+
{
193+
System = "http://www.unknown.org/",
194+
Concept = new List<ValueSet.ConceptReferenceComponent>
195+
{
196+
new()
197+
{
198+
Code = "parent"
199+
},
200+
new()
201+
{
202+
Code = "child1"
203+
}
204+
}
205+
}
206+
};
207+
208+
resolver.Reload(cs, vs);
209+
await expander.ExpandAsync(vs);
210+
vs.Expansion.Contains.Select(c => c.Code).Should().BeEquivalentTo(["child2"]);
211+
212+
vs.Compose.Exclude = new List<ValueSet.ConceptSetComponent>
213+
{
214+
new()
215+
{
216+
System = "http://www.unknown.org/",
217+
Filter = new List<ValueSet.FilterComponent>
218+
{
219+
new()
220+
{
221+
Property = "concept",
222+
Op = FilterOperator.IsA,
223+
Value = "parent"
224+
}
225+
}
226+
}
227+
};
228+
229+
resolver.Reload(cs, vs);
230+
await expander.ExpandAsync(vs);
231+
vs.Expansion.Contains.Select(c => c.Code).Should().BeEmpty();
232+
233+
}
116234
}
117235
}

0 commit comments

Comments
 (0)