|
9 | 9 | from infrahub.core.node import Node |
10 | 10 | from infrahub.core.node.resource_manager.number_pool import CoreNumberPool |
11 | 11 | from infrahub.core.registry import registry |
12 | | -from infrahub.core.schema import NodeSchema, SchemaRoot |
| 12 | +from infrahub.core.schema import GenericSchema, NodeSchema, SchemaRoot |
13 | 13 | from infrahub.core.schema.attribute_parameters import ( |
14 | 14 | NumberAttributeParameters, |
15 | 15 | NumberPoolParameters, |
@@ -117,6 +117,51 @@ def test_number_pool_read_only() -> None: |
117 | 117 | schema_branch.process() |
118 | 118 |
|
119 | 119 |
|
| 120 | +def test_number_pool_override_generic() -> None: |
| 121 | + node_schema_definition: dict[str, Any] = { |
| 122 | + "name": "NumberAttribute", |
| 123 | + "namespace": "Test", |
| 124 | + "inherit_from": ["BaseNumberAttribute"], |
| 125 | + "attributes": [ |
| 126 | + {"name": "name", "kind": "Text", "unique": True}, |
| 127 | + { |
| 128 | + "name": "number", |
| 129 | + "kind": "NumberPool", |
| 130 | + "optional": False, |
| 131 | + "unique": True, |
| 132 | + "read_only": True, |
| 133 | + "parameters": {"start_range": 16, "end_range": 25}, |
| 134 | + }, |
| 135 | + ], |
| 136 | + } |
| 137 | + node_schema = NodeSchema(**node_schema_definition) |
| 138 | + generic_node_schema_definition: dict[str, Any] = { |
| 139 | + "name": "NumberAttribute", |
| 140 | + "namespace": "Base", |
| 141 | + "attributes": [ |
| 142 | + {"name": "name", "kind": "Text", "unique": True}, |
| 143 | + { |
| 144 | + "name": "number", |
| 145 | + "kind": "NumberPool", |
| 146 | + "optional": False, |
| 147 | + "unique": True, |
| 148 | + "read_only": True, |
| 149 | + "parameters": {"start_range": 10, "end_range": 25}, |
| 150 | + }, |
| 151 | + ], |
| 152 | + } |
| 153 | + generic_schema = GenericSchema(**generic_node_schema_definition) |
| 154 | + |
| 155 | + schema = SchemaRoot(nodes=[node_schema], generics=[generic_schema]) |
| 156 | + schema_branch = SchemaBranch(cache={}) |
| 157 | + schema_branch.load_schema(schema=schema) |
| 158 | + with pytest.raises( |
| 159 | + ValidationError, |
| 160 | + match="Overriding 'TestNumberAttribute.number' NumberPool attribute from generic 'BaseNumberAttribute' is not supported", |
| 161 | + ): |
| 162 | + schema_branch.process() |
| 163 | + |
| 164 | + |
120 | 165 | def test_number_pool_assign_from_generics() -> None: |
121 | 166 | schema = SchemaRoot(generics=[SNOW_TASK], nodes=[SNOW_INCIDENT, SNOW_REQUEST]) |
122 | 167 | schema_branch = SchemaBranch(cache={}) |
|
0 commit comments