Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions nisystemlink/clients/spec/models/_condition.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from typing import List, Optional, Union

from nisystemlink.clients.core._uplink._json_model import JsonModel
from pydantic import StrictStr


class ConditionType(Enum):
Expand Down Expand Up @@ -56,7 +57,7 @@ class StringConditionValue(ConditionValueBase):
String conditions may only contain discrete lists of values.
"""

discrete: Optional[List[str]] = None
discrete: Optional[List[StrictStr]] = None
"""List of condition discrete values."""


Expand All @@ -66,5 +67,5 @@ class Condition(JsonModel):
name: Optional[str] = None
"""Name of the condition."""

value: Optional[Union[NumericConditionValue, StringConditionValue]] = None
value: Optional[Union[StringConditionValue, NumericConditionValue]] = None
"""Value of the condition."""
26 changes: 22 additions & 4 deletions tests/integration/spec/test_spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
SpecificationLimit,
SpecificationProjection,
SpecificationType,
StringConditionValue,
UpdateSpecificationsRequest,
UpdateSpecificationsRequestObject,
)
Expand Down Expand Up @@ -88,10 +89,9 @@ def create_specs_for_query(create_specs, product):
),
Condition(
name="Supply Voltage",
value=NumericConditionValue(
condition_type=ConditionType.NUMERIC,
discrete=[1.3, 1.5, 1.7],
unit="mV",
value=StringConditionValue(
condition_type=ConditionType.STRING,
discrete=["1.3", "1.5", "1.7"],
),
),
],
Expand Down Expand Up @@ -298,6 +298,24 @@ def test__query_spec_projection_columns__columns_returned(
assert "spec_id" in spec_columns
assert "name" in spec_columns

def test__query_specs__returns_condition_value_type_correctly(
self, client: SpecClient, create_specs, create_specs_for_query, product
):
request = QuerySpecificationsRequest(
product_ids=[product],
projection=[
SpecificationProjection.CONDITION_NAME,
SpecificationProjection.CONDITION_UNIT,
],
)

response = client.query_specs(request)

assert response.specs
assert len(response.specs) == 3
assert isinstance(response.specs[1].conditions[0].value, NumericConditionValue)
assert isinstance(response.specs[1].conditions[1].value, StringConditionValue)

def test__without_condition_type_projection__query_specs__condition_type_field_is_unset(
self, client: SpecClient, create_specs, create_specs_for_query, product
):
Expand Down
Loading