Spaces:
Running
Running
| import pytest | |
| from langflow.inputs.inputs import ( | |
| BoolInput, | |
| CodeInput, | |
| DataInput, | |
| DictInput, | |
| DropdownInput, | |
| FileInput, | |
| FloatInput, | |
| HandleInput, | |
| InputTypesMap, | |
| IntInput, | |
| MessageTextInput, | |
| MultilineInput, | |
| MultilineSecretInput, | |
| MultiselectInput, | |
| NestedDictInput, | |
| PromptInput, | |
| SecretStrInput, | |
| StrInput, | |
| TableInput, | |
| ) | |
| from langflow.inputs.utils import instantiate_input | |
| from langflow.schema.message import Message | |
| from pydantic import ValidationError | |
| def test_table_input_valid(): | |
| data = TableInput(name="valid_table", value=[{"key": "value"}, {"key2": "value2"}]) | |
| assert data.value == [{"key": "value"}, {"key2": "value2"}] | |
| def test_table_input_invalid(): | |
| with pytest.raises(ValidationError): | |
| TableInput(name="invalid_table", value="invalid") | |
| with pytest.raises(ValidationError): | |
| TableInput(name="invalid_table", value=[{"key": "value"}, "invalid"]) | |
| def test_str_input_valid(): | |
| data = StrInput(name="valid_str", value="This is a string") | |
| assert data.value == "This is a string" | |
| def test_str_input_invalid(): | |
| with pytest.warns(UserWarning): | |
| StrInput(name="invalid_str", value=1234) | |
| def test_message_text_input_valid(): | |
| data = MessageTextInput(name="valid_msg", value="This is a message") | |
| assert data.value == "This is a message" | |
| msg = Message(text="This is a message") | |
| data = MessageTextInput(name="valid_msg", value=msg) | |
| assert data.value == "This is a message" | |
| def test_message_text_input_invalid(): | |
| with pytest.raises(ValidationError): | |
| MessageTextInput(name="invalid_msg", value=1234) | |
| def test_instantiate_input_valid(): | |
| data = {"name": "valid_input", "value": "This is a string"} | |
| input_instance = instantiate_input("StrInput", data) | |
| assert isinstance(input_instance, StrInput) | |
| assert input_instance.value == "This is a string" | |
| def test_instantiate_input_invalid(): | |
| with pytest.raises(ValueError, match="Invalid input type: InvalidInput"): | |
| instantiate_input("InvalidInput", {"name": "invalid_input", "value": "This is a string"}) | |
| def test_handle_input_valid(): | |
| data = HandleInput(name="valid_handle", input_types=["BaseLanguageModel"]) | |
| assert data.input_types == ["BaseLanguageModel"] | |
| def test_handle_input_invalid(): | |
| with pytest.raises(ValidationError): | |
| HandleInput(name="invalid_handle", input_types="BaseLanguageModel") | |
| def test_data_input_valid(): | |
| data_input = DataInput(name="valid_data", input_types=["Data"]) | |
| assert data_input.input_types == ["Data"] | |
| def test_prompt_input_valid(): | |
| prompt_input = PromptInput(name="valid_prompt", value="Enter your name") | |
| assert prompt_input.value == "Enter your name" | |
| def test_code_input_valid(): | |
| code_input = CodeInput(name="valid_code", value="def hello():\n print('Hello, World!')") | |
| assert code_input.value == "def hello():\n print('Hello, World!')" | |
| def test_multiline_input_valid(): | |
| multiline_input = MultilineInput(name="valid_multiline", value="This is a\nmultiline input") | |
| assert multiline_input.value == "This is a\nmultiline input" | |
| assert multiline_input.multiline is True | |
| def test_multiline_input_invalid(): | |
| with pytest.raises(ValidationError): | |
| MultilineInput(name="invalid_multiline", value=1234) | |
| def test_multiline_secret_input_valid(): | |
| multiline_secret_input = MultilineSecretInput(name="valid_multiline_secret", value="secret") | |
| assert multiline_secret_input.value == "secret" | |
| assert multiline_secret_input.password is True | |
| def test_multiline_secret_input_invalid(): | |
| with pytest.raises(ValidationError): | |
| MultilineSecretInput(name="invalid_multiline_secret", value=1234) | |
| def test_secret_str_input_valid(): | |
| secret_str_input = SecretStrInput(name="valid_secret_str", value="supersecret") | |
| assert secret_str_input.value == "supersecret" | |
| assert secret_str_input.password is True | |
| def test_secret_str_input_invalid(): | |
| with pytest.raises(ValidationError): | |
| SecretStrInput(name="invalid_secret_str", value=1234) | |
| def test_int_input_valid(): | |
| int_input = IntInput(name="valid_int", value=10) | |
| assert int_input.value == 10 | |
| def test_int_input_invalid(): | |
| with pytest.raises(ValidationError): | |
| IntInput(name="invalid_int", value="not_an_int") | |
| def test_float_input_valid(): | |
| float_input = FloatInput(name="valid_float", value=10.5) | |
| assert float_input.value == 10.5 | |
| def test_float_input_invalid(): | |
| with pytest.raises(ValidationError): | |
| FloatInput(name="invalid_float", value="not_a_float") | |
| def test_bool_input_valid(): | |
| bool_input = BoolInput(name="valid_bool", value=True) | |
| assert bool_input.value is True | |
| def test_bool_input_invalid(): | |
| with pytest.raises(ValidationError): | |
| BoolInput(name="invalid_bool", value="not_a_bool") | |
| def test_nested_dict_input_valid(): | |
| nested_dict_input = NestedDictInput(name="valid_nested_dict", value={"key": "value"}) | |
| assert nested_dict_input.value == {"key": "value"} | |
| def test_nested_dict_input_invalid(): | |
| with pytest.raises(ValidationError): | |
| NestedDictInput(name="invalid_nested_dict", value="not_a_dict") | |
| def test_dict_input_valid(): | |
| dict_input = DictInput(name="valid_dict", value={"key": "value"}) | |
| assert dict_input.value == {"key": "value"} | |
| def test_dict_input_invalid(): | |
| with pytest.raises(ValidationError): | |
| DictInput(name="invalid_dict", value="not_a_dict") | |
| def test_dropdown_input_valid(): | |
| dropdown_input = DropdownInput(name="valid_dropdown", options=["option1", "option2"]) | |
| assert dropdown_input.options == ["option1", "option2"] | |
| def test_dropdown_input_invalid(): | |
| with pytest.raises(ValidationError): | |
| DropdownInput(name="invalid_dropdown", options="option1") | |
| def test_multiselect_input_valid(): | |
| multiselect_input = MultiselectInput(name="valid_multiselect", value=["option1", "option2"]) | |
| assert multiselect_input.value == ["option1", "option2"] | |
| def test_multiselect_input_invalid(): | |
| with pytest.raises(ValidationError): | |
| MultiselectInput(name="invalid_multiselect", value="option1") | |
| def test_file_input_valid(): | |
| file_input = FileInput(name="valid_file", value=["/path/to/file"]) | |
| assert file_input.value == ["/path/to/file"] | |
| def test_instantiate_input_comprehensive(): | |
| valid_data = { | |
| "StrInput": {"name": "str_input", "value": "A string"}, | |
| "IntInput": {"name": "int_input", "value": 10}, | |
| "FloatInput": {"name": "float_input", "value": 10.5}, | |
| "BoolInput": {"name": "bool_input", "value": True}, | |
| "DictInput": {"name": "dict_input", "value": {"key": "value"}}, | |
| "MultiselectInput": { | |
| "name": "multiselect_input", | |
| "value": ["option1", "option2"], | |
| }, | |
| } | |
| for input_type, data in valid_data.items(): | |
| input_instance = instantiate_input(input_type, data) | |
| assert isinstance(input_instance, InputTypesMap[input_type]) | |
| with pytest.raises(ValueError, match="Invalid input type: InvalidInput"): | |
| instantiate_input("InvalidInput", {"name": "invalid_input", "value": "Invalid"}) | |