| | from typing import TYPE_CHECKING, Literal |
| |
|
| | import pytest |
| | from langflow.components.inputs import ChatInput |
| |
|
| | if TYPE_CHECKING: |
| | from pydantic.fields import FieldInfo |
| |
|
| |
|
| | def test_create_input_schema(): |
| | from langflow.io.schema import create_input_schema |
| |
|
| | schema = create_input_schema(ChatInput.inputs) |
| | assert schema.__name__ == "InputSchema" |
| |
|
| |
|
| | class TestCreateInputSchema: |
| | |
| | def test_single_input_type_conversion(self): |
| | from langflow.inputs.inputs import StrInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | input_instance = StrInput(name="test_field") |
| | schema = create_input_schema([input_instance]) |
| | assert schema.__name__ == "InputSchema" |
| | assert "test_field" in schema.model_fields |
| |
|
| | |
| | def test_multiple_input_types(self): |
| | from langflow.inputs.inputs import IntInput, StrInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | inputs = [StrInput(name="str_field"), IntInput(name="int_field")] |
| | schema = create_input_schema(inputs) |
| | assert schema.__name__ == "InputSchema" |
| | assert "str_field" in schema.model_fields |
| | assert "int_field" in schema.model_fields |
| |
|
| | |
| | def test_fields_creation_with_correct_types_and_attributes(self): |
| | from langflow.inputs.inputs import StrInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | input_instance = StrInput(name="test_field", info="Test Info", required=True) |
| | schema = create_input_schema([input_instance]) |
| | field_info = schema.model_fields["test_field"] |
| | assert field_info.description == "Test Info" |
| | assert field_info.is_required() is True |
| |
|
| | |
| | def test_schema_model_creation(self): |
| | from langflow.inputs.inputs import StrInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | input_instance = StrInput(name="test_field") |
| | schema = create_input_schema([input_instance]) |
| | assert schema.__name__ == "InputSchema" |
| |
|
| | |
| | def test_default_values_assignment(self): |
| | from langflow.inputs.inputs import StrInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | input_instance = StrInput(name="test_field", value="default_value") |
| | schema = create_input_schema([input_instance]) |
| | field_info = schema.model_fields["test_field"] |
| | assert field_info.default == "default_value" |
| |
|
| | |
| | def test_empty_list_of_inputs(self): |
| | from langflow.io.schema import create_input_schema |
| |
|
| | schema = create_input_schema([]) |
| | assert schema.__name__ == "InputSchema" |
| |
|
| | |
| | def test_missing_optional_attributes(self): |
| | from langflow.inputs.inputs import StrInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | input_instance = StrInput(name="test_field") |
| | schema = create_input_schema([input_instance]) |
| | field_info = schema.model_fields["test_field"] |
| | assert field_info.title == "Test Field" |
| | assert field_info.description == "" |
| |
|
| | |
| | def test_is_list_attribute_processing(self): |
| | from langflow.inputs.inputs import StrInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | input_instance = StrInput(name="test_field", is_list=True) |
| | schema = create_input_schema([input_instance]) |
| | field_info: FieldInfo = schema.model_fields["test_field"] |
| | assert field_info.annotation == list[str] |
| |
|
| | |
| | def test_options_attribute_processing(self): |
| | from langflow.inputs.inputs import DropdownInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | input_instance = DropdownInput(name="test_field", options=["option1", "option2"]) |
| | schema = create_input_schema([input_instance]) |
| | field_info = schema.model_fields["test_field"] |
| | assert field_info.annotation == Literal["option1", "option2"] |
| |
|
| | |
| | def test_non_standard_field_types_handling(self): |
| | from langflow.inputs.inputs import FileInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | input_instance = FileInput(name="file_field") |
| | schema = create_input_schema([input_instance]) |
| | field_info = schema.model_fields["file_field"] |
| | assert field_info.annotation is str |
| |
|
| | |
| | def test_mixed_required_optional_fields_processing(self): |
| | from langflow.inputs.inputs import IntInput, StrInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | inputs = [ |
| | StrInput(name="required_field", required=True), |
| | IntInput(name="optional_field", required=False), |
| | ] |
| | schema = create_input_schema(inputs) |
| | required_field_info = schema.model_fields["required_field"] |
| | optional_field_info = schema.model_fields["optional_field"] |
| |
|
| | assert required_field_info.is_required() is True |
| | assert optional_field_info.is_required() is False |
| |
|
| | |
| | def test_complex_nested_structures_handling(self): |
| | from langflow.inputs.inputs import NestedDictInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | nested_input = NestedDictInput(name="nested_field", value={"key": "value"}) |
| | schema = create_input_schema([nested_input]) |
| |
|
| | field_info = schema.model_fields["nested_field"] |
| |
|
| | assert isinstance(field_info.default, dict) |
| | assert field_info.default["key"] == "value" |
| |
|
| | |
| | def test_single_input_type_replica(self): |
| | from langflow.inputs.inputs import StrInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | input_instance = StrInput(name="test_field") |
| | schema = create_input_schema([input_instance]) |
| | assert schema.__name__ == "InputSchema" |
| | assert "test_field" in schema.model_fields |
| |
|
| | |
| | def test_passing_input_type_directly(self): |
| | from langflow.inputs.inputs import IntInput, StrInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | inputs = StrInput(name="str_field"), IntInput(name="int_field") |
| | with pytest.raises(TypeError): |
| | create_input_schema(inputs) |
| |
|
| | |
| | def test_options_handling(self): |
| | from langflow.inputs.inputs import DropdownInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | input_instance = DropdownInput(name="test_field", options=["option1", "option2"]) |
| | schema = create_input_schema([input_instance]) |
| | field_info = schema.model_fields["test_field"] |
| | assert field_info.annotation == Literal["option1", "option2"] |
| |
|
| | |
| | def test_is_list_handling(self): |
| | from langflow.inputs.inputs import StrInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | input_instance = StrInput(name="test_field", is_list=True) |
| | schema = create_input_schema([input_instance]) |
| | field_info = schema.model_fields["test_field"] |
| | assert field_info.annotation == list[str] |
| |
|
| | |
| | def test_field_types_conversion(self): |
| | from langflow.inputs.inputs import IntInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | input_instance = IntInput(name="int_field") |
| | schema = create_input_schema([input_instance]) |
| | field_info = schema.model_fields["int_field"] |
| | assert field_info.annotation is int |
| |
|
| | |
| | def test_default_values_for_non_required_fields(self): |
| | from langflow.inputs.inputs import StrInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | input_instance = StrInput(name="test_field", value="default_value") |
| | schema = create_input_schema([input_instance]) |
| | field_info = schema.model_fields["test_field"] |
| | assert field_info.default == "default_value" |
| |
|
| | |
| | def test_missing_attributes_handling(self): |
| | from langflow.inputs.inputs import StrInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | input_instance = StrInput(name="test_field") |
| | schema = create_input_schema([input_instance]) |
| | field_info = schema.model_fields["test_field"] |
| | assert field_info.title == "Test Field" |
| | assert field_info.description == "" |
| |
|
| | |
| |
|
| | |
| | def test_none_default_value_handling(self): |
| | from langflow.inputs.inputs import StrInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | input_instance = StrInput(name="test_field", value=None) |
| | schema = create_input_schema([input_instance]) |
| | field_info = schema.model_fields["test_field"] |
| | assert field_info.default is None |
| |
|
| | |
| | def test_special_characters_in_names_handling(self): |
| | from langflow.inputs.inputs import StrInput |
| | from langflow.io.schema import create_input_schema |
| |
|
| | input_instance = StrInput(name="test@field#name") |
| | schema = create_input_schema([input_instance]) |
| | assert "test@field#name" in schema.model_fields |
| |
|