From 65ae25e09be49355a0c851fec1060026a02d166e Mon Sep 17 00:00:00 2001 From: QuantumGhost Date: Fri, 1 Aug 2025 13:18:12 +0800 Subject: [PATCH] test(api): add test cases for ParameterConfig validation logic --- .../nodes/parameter_extractor/entities.py | 16 +---------- .../nodes/parameter_extractor/__init__.py | 0 .../parameter_extractor/test_entities.py | 27 +++++++++++++++++++ 3 files changed, 28 insertions(+), 15 deletions(-) create mode 100644 api/tests/unit_tests/core/workflow/nodes/parameter_extractor/__init__.py create mode 100644 api/tests/unit_tests/core/workflow/nodes/parameter_extractor/test_entities.py diff --git a/api/core/workflow/nodes/parameter_extractor/entities.py b/api/core/workflow/nodes/parameter_extractor/entities.py index 0bc92fb600..12347d21a5 100644 --- a/api/core/workflow/nodes/parameter_extractor/entities.py +++ b/api/core/workflow/nodes/parameter_extractor/entities.py @@ -58,20 +58,6 @@ class ParameterConfig(BaseModel): description: str required: bool - _is_old_select_type: bool = PrivateAttr(default=False) - - @model_validator(mode="wrap") - @classmethod - def log_failed_validation(cls, data: Any, handler: ModelWrapValidatorHandler[Self]) -> Self: - if not isinstance(data, dict): - return handler(data) - - original_type = data.get("type") - instance = handler(data) - if original_type == _OLD_SELECT_TYPE_NAME: - instance._is_old_select_type = True - return instance - @field_validator("name", mode="before") @classmethod def validate_name(cls, value) -> str: @@ -138,7 +124,7 @@ class ParameterExtractorNodeData(BaseNodeData): else: parameter_schema["type"] = parameter.type - if parameter._is_old_select_type: + if parameter.options: parameter_schema["enum"] = parameter.options parameters["properties"][parameter.name] = parameter_schema diff --git a/api/tests/unit_tests/core/workflow/nodes/parameter_extractor/__init__.py b/api/tests/unit_tests/core/workflow/nodes/parameter_extractor/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/api/tests/unit_tests/core/workflow/nodes/parameter_extractor/test_entities.py b/api/tests/unit_tests/core/workflow/nodes/parameter_extractor/test_entities.py new file mode 100644 index 0000000000..b28d1d3d0a --- /dev/null +++ b/api/tests/unit_tests/core/workflow/nodes/parameter_extractor/test_entities.py @@ -0,0 +1,27 @@ +from core.variables.types import SegmentType +from core.workflow.nodes.parameter_extractor.entities import ParameterConfig + + +class TestParameterConfig: + def test_select_type(self): + data = { + "name": "yes_or_no", + "type": "select", + "options": ["yes", "no"], + "description": "a simple select made of `yes` and `no`", + "required": True, + } + + pc = ParameterConfig.model_validate(data) + assert pc.type == SegmentType.STRING + assert pc.options == data["options"] + + def test_validate_bool_type(self): + data = { + "name": "boolean", + "type": "bool", + "description": "a simple boolean parameter", + "required": True, + } + pc = ParameterConfig.model_validate(data) + assert pc.type == SegmentType.BOOLEAN