Skip to content

Commit 712bed7

Browse files
committed
Add test for adding enum with extra permissible value specs
1 parent a3e6030 commit 712bed7

File tree

1 file changed

+54
-2
lines changed

1 file changed

+54
-2
lines changed

tests/test_utils/test_schema_builder.py

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@
44
import pytest
55

66
from linkml_runtime.utils.schema_builder import SchemaBuilder
7-
from linkml_runtime.linkml_model import ClassDefinition, SlotDefinition
7+
from linkml_runtime.linkml_model import (
8+
ClassDefinition,
9+
SlotDefinition,
10+
EnumDefinition,
11+
PermissibleValue,
12+
)
813

914

1015
# === Tests for `SchemaBuilder.add_class` ===
@@ -146,4 +151,51 @@ def test_add_class_with_extra_kwargs(
146151

147152
assert added_class == expected_added_class
148153

149-
# === Tests for `SchemaBuilder.add_class` end ===
154+
155+
# === Tests for `SchemaBuilder.add_class` end ===
156+
157+
158+
# === Tests for `SchemaBuilder.add_enum` ===
159+
@pytest.mark.parametrize(
160+
("enum_def", "permissible_values", "expected_added_enum"),
161+
[
162+
(EnumDefinition(name="Color"), [], EnumDefinition(name="Color")),
163+
# invalid permissible values
164+
(EnumDefinition(name="Color"), ["RED", 3], EnumDefinition(name="Color")),
165+
(
166+
EnumDefinition(name="Color"),
167+
["RED", "BLUE"],
168+
EnumDefinition(
169+
name="Color",
170+
permissible_values=[PermissibleValue("RED"), PermissibleValue("BLUE")],
171+
),
172+
),
173+
(
174+
EnumDefinition(name="Color", permissible_values=[PermissibleValue("RED")]),
175+
[PermissibleValue("RED", description="A bright color"), "B"],
176+
EnumDefinition(
177+
name="Color",
178+
permissible_values=[
179+
PermissibleValue("RED", description="A bright color"),
180+
PermissibleValue("B"),
181+
],
182+
),
183+
),
184+
],
185+
)
186+
def test_add_enum_with_extra_permissible_values(
187+
enum_def: EnumDefinition,
188+
permissible_values: List[Union[str, PermissibleValue]],
189+
expected_added_enum: Optional[EnumDefinition],
190+
):
191+
"""
192+
Test adding an enum with extra, overriding, permissible values
193+
"""
194+
builder = SchemaBuilder()
195+
196+
if any(not isinstance(pv, (str, PermissibleValue)) for pv in permissible_values):
197+
with pytest.raises(TypeError, match="permissible value must be"):
198+
builder.add_enum(enum_def, permissible_values=permissible_values)
199+
else:
200+
builder.add_enum(enum_def, permissible_values=permissible_values)
201+
assert builder.schema.enums[enum_def.name] == expected_added_enum

0 commit comments

Comments
 (0)