From da90c934c09fccd254d65eb4d6418c31cd972fb4 Mon Sep 17 00:00:00 2001 From: QuantumGhost Date: Thu, 14 May 2026 14:18:51 +0800 Subject: [PATCH] test(api): add a test to ensure extra_contents exists --- ...message_service_execution_extra_content.py | 67 +++++++++++++++---- 1 file changed, 53 insertions(+), 14 deletions(-) diff --git a/api/tests/test_containers_integration_tests/services/test_message_service_execution_extra_content.py b/api/tests/test_containers_integration_tests/services/test_message_service_execution_extra_content.py index 52ebc0131f..6a9046acd4 100644 --- a/api/tests/test_containers_integration_tests/services/test_message_service_execution_extra_content.py +++ b/api/tests/test_containers_integration_tests/services/test_message_service_execution_extra_content.py @@ -3,6 +3,7 @@ from __future__ import annotations import pytest from sqlalchemy.orm import Session +from models.human_input import HumanInputFormStatus from services.message_service import MessageService from tests.test_containers_integration_tests.helpers.execution_extra_content import ( create_human_input_message_fixture, @@ -23,17 +24,55 @@ def test_pagination_returns_extra_contents(db_session_with_containers: Session): assert pagination.data message = pagination.data[0] - assert message.extra_contents == [ - { - "type": "human_input", - "workflow_run_id": fixture.message.workflow_run_id, - "submitted": True, - "form_submission_data": { - "node_id": fixture.form.node_id, - "node_title": fixture.node_title, - "rendered_content": fixture.form.rendered_content, - "action_id": fixture.action_id, - "action_text": fixture.action_text, - }, - } - ] + assert len(message.extra_contents) == 1 + content = message.extra_contents[0] + assert content["type"] == "human_input" + assert content["workflow_run_id"] == fixture.message.workflow_run_id + assert content["submitted"] is True + + form_submission_data = content["form_submission_data"] + assert form_submission_data["node_id"] == fixture.form.node_id + assert form_submission_data["node_title"] == fixture.node_title + assert form_submission_data["rendered_content"] == fixture.form.rendered_content + assert form_submission_data["action_id"] == fixture.action_id + assert form_submission_data["action_text"] == fixture.action_text + + form_definition = content["form_definition"] + assert form_definition["form_id"] == fixture.form.id + assert form_definition["node_id"] == fixture.form.node_id + assert form_definition["node_title"] == fixture.node_title + assert form_definition["form_content"] == fixture.form.rendered_content + + +@pytest.mark.usefixtures("flask_req_ctx_with_containers") +def test_pagination_returns_waiting_human_input_extra_contents(db_session_with_containers: Session): + fixture = create_human_input_message_fixture(db_session_with_containers) + fixture.form.status = HumanInputFormStatus.WAITING + fixture.form.selected_action_id = None + fixture.form.submitted_at = None + fixture.form.submitted_data = None + db_session_with_containers.commit() + + pagination = MessageService.pagination_by_first_id( + app_model=fixture.app, + user=fixture.account, + conversation_id=fixture.conversation.id, + first_id=None, + limit=10, + ) + + assert pagination.data + message = pagination.data[0] + assert len(message.extra_contents) == 1 + content = message.extra_contents[0] + assert content["type"] == "human_input" + assert content["workflow_run_id"] == fixture.message.workflow_run_id + assert content["submitted"] is False + assert "form_submission_data" not in content + + form_definition = content["form_definition"] + assert form_definition["form_id"] == fixture.form.id + assert form_definition["node_id"] == fixture.form.node_id + assert form_definition["node_title"] == fixture.node_title + assert form_definition["form_content"] == fixture.form.rendered_content + assert form_definition["display_in_ui"] is True