From 9368aef91eef9d037e4938520a2aeaab809d6c7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Boschi?= Date: Mon, 2 Sep 2024 16:33:30 +0200 Subject: [PATCH] ci: add tests for text input/output components (#3649) * ci: add tests for text input/output components * ci: add tests for text input/output components * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- .../components/inputs/test_text_input.py | 21 +++++++++++++++++ .../components/outputs/test_text_output.py | 23 +++++++++++++++++++ src/backend/tests/integration/utils.py | 8 +++++-- 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 src/backend/tests/integration/components/inputs/test_text_input.py create mode 100644 src/backend/tests/integration/components/outputs/test_text_output.py diff --git a/src/backend/tests/integration/components/inputs/test_text_input.py b/src/backend/tests/integration/components/inputs/test_text_input.py new file mode 100644 index 000000000000..c0379d794208 --- /dev/null +++ b/src/backend/tests/integration/components/inputs/test_text_input.py @@ -0,0 +1,21 @@ +from langflow.schema.message import Message +from tests.integration.utils import run_single_component + +from langflow.components.inputs import TextInputComponent +import pytest + + +@pytest.mark.asyncio +async def test_text_input(): + outputs = await run_single_component(TextInputComponent, run_input="sample text", input_type="text") + print(outputs) + assert isinstance(outputs["text"], Message) + assert outputs["text"].text == "sample text" + assert outputs["text"].sender is None + assert outputs["text"].sender_name is None + + outputs = await run_single_component(TextInputComponent, run_input="", input_type="text") + assert isinstance(outputs["text"], Message) + assert outputs["text"].text == "" + assert outputs["text"].sender is None + assert outputs["text"].sender_name is None diff --git a/src/backend/tests/integration/components/outputs/test_text_output.py b/src/backend/tests/integration/components/outputs/test_text_output.py new file mode 100644 index 000000000000..5c0e2cdb424f --- /dev/null +++ b/src/backend/tests/integration/components/outputs/test_text_output.py @@ -0,0 +1,23 @@ +from langflow.components.outputs import TextOutputComponent +from langflow.schema.message import Message +from tests.integration.utils import run_single_component + +import pytest + + +@pytest.mark.asyncio +async def test(): + outputs = await run_single_component(TextOutputComponent, inputs={"input_value": "hello"}) + assert isinstance(outputs["text"], Message) + assert outputs["text"].text == "hello" + assert outputs["text"].sender is None + assert outputs["text"].sender_name is None + + +@pytest.mark.asyncio +async def test_message(): + outputs = await run_single_component(TextOutputComponent, inputs={"input_value": Message(text="hello")}) + assert isinstance(outputs["text"], Message) + assert outputs["text"].text == "hello" + assert outputs["text"].sender is None + assert outputs["text"].sender_name is None diff --git a/src/backend/tests/integration/utils.py b/src/backend/tests/integration/utils.py index 83ccde2378af..8203dd60459a 100644 --- a/src/backend/tests/integration/utils.py +++ b/src/backend/tests/integration/utils.py @@ -136,7 +136,11 @@ class ComponentInputHandle: async def run_single_component( - clazz: type, inputs: dict = None, run_input: Optional[Any] = None, session_id: Optional[str] = None + clazz: type, + inputs: dict = None, + run_input: Optional[Any] = None, + session_id: Optional[str] = None, + input_type: Optional[str] = "chat", ) -> dict[str, Any]: user_id = str(uuid.uuid4()) flow_id = str(uuid.uuid4()) @@ -162,7 +166,7 @@ def _add_component(clazz: type, inputs: Optional[dict] = None) -> str: component_id = _add_component(clazz, inputs) graph.prepare() if run_input: - graph_run_inputs = [InputValueRequest(input_value=run_input, type="chat")] + graph_run_inputs = [InputValueRequest(input_value=run_input, type=input_type)] else: graph_run_inputs = []