|
17 | 17 | SpecificationLimit, |
18 | 18 | SpecificationProjection, |
19 | 19 | SpecificationType, |
| 20 | + StringConditionValue, |
20 | 21 | UpdateSpecificationsRequest, |
21 | 22 | UpdateSpecificationsRequestObject, |
22 | 23 | ) |
@@ -83,15 +84,15 @@ def create_specs_for_query(create_specs, product): |
83 | 84 | value=NumericConditionValue( |
84 | 85 | condition_type=ConditionType.NUMERIC, |
85 | 86 | range=[ConditionRange(min=-25, step=20, max=85)], |
| 87 | + discrete=[2, 1.5, 21], |
86 | 88 | unit="C", |
87 | 89 | ), |
88 | 90 | ), |
89 | 91 | Condition( |
90 | 92 | name="Supply Voltage", |
91 | | - value=NumericConditionValue( |
92 | | - condition_type=ConditionType.NUMERIC, |
93 | | - discrete=[1.3, 1.5, 1.7], |
94 | | - unit="mV", |
| 93 | + value=StringConditionValue( |
| 94 | + condition_type=ConditionType.STRING, |
| 95 | + discrete=["1.3", "1.5", "1.7"], |
95 | 96 | ), |
96 | 97 | ), |
97 | 98 | ], |
@@ -298,6 +299,47 @@ def test__query_spec_projection_columns__columns_returned( |
298 | 299 | assert "spec_id" in spec_columns |
299 | 300 | assert "name" in spec_columns |
300 | 301 |
|
| 302 | + def test__query_specs__returns_condition_value_type_correctly( |
| 303 | + self, client: SpecClient, create_specs, create_specs_for_query, product |
| 304 | + ): |
| 305 | + request = QuerySpecificationsRequest( |
| 306 | + product_ids=[product], |
| 307 | + projection=[ |
| 308 | + SpecificationProjection.CONDITION_NAME, |
| 309 | + SpecificationProjection.CONDITION_UNIT, |
| 310 | + SpecificationProjection.CONDITION_VALUES, |
| 311 | + ], |
| 312 | + ) |
| 313 | + |
| 314 | + response = client.query_specs(request) |
| 315 | + |
| 316 | + assert response.specs |
| 317 | + assert len(response.specs) == 3 |
| 318 | + condition_1 = ( |
| 319 | + response.specs[1].conditions[0].value |
| 320 | + if response.specs[1].conditions |
| 321 | + else None |
| 322 | + ) |
| 323 | + condition_2 = ( |
| 324 | + response.specs[1].conditions[1].value |
| 325 | + if response.specs[1].conditions |
| 326 | + else None |
| 327 | + ) |
| 328 | + condition_1_discrete_values = ( |
| 329 | + [discrete for discrete in condition_1.discrete or []] if condition_1 else [] |
| 330 | + ) |
| 331 | + condition_2_discrete_values = ( |
| 332 | + [discrete for discrete in condition_2.discrete or []] if condition_2 else [] |
| 333 | + ) |
| 334 | + assert isinstance(condition_1, NumericConditionValue) |
| 335 | + assert isinstance(condition_2, StringConditionValue) |
| 336 | + assert isinstance(condition_1_discrete_values[0], int) |
| 337 | + assert isinstance(condition_1_discrete_values[1], float) |
| 338 | + assert isinstance(condition_1_discrete_values[2], int) |
| 339 | + assert isinstance(condition_2_discrete_values[0], str) |
| 340 | + assert isinstance(condition_2_discrete_values[1], str) |
| 341 | + assert isinstance(condition_2_discrete_values[2], str) |
| 342 | + |
301 | 343 | def test__without_condition_type_projection__query_specs__condition_type_field_is_unset( |
302 | 344 | self, client: SpecClient, create_specs, create_specs_for_query, product |
303 | 345 | ): |
|
0 commit comments