diff --git a/backend/tests/unit/core/test_schema.py b/backend/tests/unit/core/test_schema.py index ef54b1bd8e..b8c5275522 100644 --- a/backend/tests/unit/core/test_schema.py +++ b/backend/tests/unit/core/test_schema.py @@ -4,6 +4,7 @@ from pydantic import ValidationError from infrahub.core import registry +from infrahub.core.branch.models import Branch from infrahub.core.constants import BranchSupportType from infrahub.core.schema import ( AttributeSchema, @@ -16,6 +17,7 @@ ) from infrahub.core.schema.attribute_parameters import TextAttributeParameters from infrahub.core.schema.attribute_schema import TextAttributeSchema +from infrahub.core.schema.generic_schema import GenericSchema from infrahub.core.schema.schema_branch import SchemaBranch from infrahub.database import InfrahubDatabase @@ -113,6 +115,40 @@ async def test_node_schema_generate_fields_for_display_label(): assert schema.generate_fields_for_display_label() == {"level": {"value": None}, "name": {"value": None}} +async def test_node_schema_generate_fields_for_display_label_with_generic(default_branch: Branch): + generic_schema = GenericSchema( + name="ThingGeneric", + namespace="Test", + attributes=[ + AttributeSchema(name="name", kind="Text"), + ], + ) + node_schema_1 = NodeSchema( + name="Thing1", + namespace="Test", + inherit_from=["TestThingGeneric"], + display_labels=["name__value", "height__value"], + attributes=[ + AttributeSchema(name="height", kind="Text"), + ], + ) + node_schema_2 = NodeSchema( + name="Thing2", + namespace="Test", + inherit_from=["TestThingGeneric"], + display_labels=["name"], + attributes=[ + AttributeSchema(name="color", kind="Text"), + ], + ) + schema_root = SchemaRoot(generics=[generic_schema], nodes=[node_schema_1, node_schema_2]) + registry.schema.register_schema(schema=schema_root, branch=default_branch.name) + schema_branch = registry.schema.get_schema_branch(name=default_branch.name) + + generic_display_label = schema_branch.generate_fields_for_display_label(name="TestThingGeneric") + assert generic_display_label == {"name": {"value": None}, "height": {"value": None}} + + async def test_rel_schema_query_filter(db: InfrahubDatabase, default_branch, car_person_schema): person = registry.schema.get(name="TestPerson") rel = person.relationships[0] diff --git a/changelog/7022.fixed.md b/changelog/7022.fixed.md new file mode 100644 index 0000000000..b5058055a9 --- /dev/null +++ b/changelog/7022.fixed.md @@ -0,0 +1 @@ +Fix bug in display label rendering that prevented schemas from defining display labels with the same attribute names in different ways (`name` vs `name__value`, for example) \ No newline at end of file diff --git a/python_sdk b/python_sdk index 5daba0eda0..3af168cd0f 160000 --- a/python_sdk +++ b/python_sdk @@ -1 +1 @@ -Subproject commit 5daba0eda0ef031eccc6524b1cdfbf0cba23c2da +Subproject commit 3af168cd0fccd5e9c5d562cc67949fa984382175