Fixed unit tests
This commit is contained in:
@@ -10,6 +10,7 @@ from components.workflows.constants import ProcessorTypes
|
||||
from components.workflows.db_management import WorkflowComponent, Connection, ComponentState, WorkflowsDesignerSettings
|
||||
from core.settings_management import SettingsManager, MemoryDbEngine
|
||||
from my_mocks import tabs_manager
|
||||
from workflow.engine import DataProcessorError
|
||||
|
||||
TEST_WORKFLOW_DESIGNER_ID = "workflow_designer_id"
|
||||
TEST_WORKFLOW_PLAYER_ID = "workflow_player_id"
|
||||
@@ -63,6 +64,9 @@ def designer(session, settings_manager, tabs_manager):
|
||||
{"height": 500, "width": 800}
|
||||
)
|
||||
|
||||
designer._state.components = {c.id: c for c in components}
|
||||
designer._state.connections = connections
|
||||
|
||||
return designer
|
||||
|
||||
|
||||
@@ -117,7 +121,7 @@ def test_run_with_cyclical_dependency(player, mocker):
|
||||
Tests that a workflow with a cycle is detected and handled before execution.
|
||||
"""
|
||||
# 1. Arrange: Introduce a cycle and spy on engine creation
|
||||
player._player_settings.connections.append(Connection("conn_3", "comp_presenter", "comp_producer"))
|
||||
player._designer._state.connections.append(Connection("conn_3", "comp_presenter", "comp_producer"))
|
||||
spy_get_engine = mocker.spy(player, '_get_engine')
|
||||
|
||||
# 2. Act
|
||||
@@ -126,7 +130,6 @@ def test_run_with_cyclical_dependency(player, mocker):
|
||||
# 3. Assert: Check for the specific cycle error
|
||||
assert player.has_error
|
||||
assert "Workflow configuration error: A cycle was detected" in player.global_error
|
||||
assert player.get_dataframe().empty
|
||||
spy_get_engine.assert_not_called()
|
||||
|
||||
|
||||
@@ -159,7 +162,7 @@ def test_run_with_failure_in_middle_component(player, mocker):
|
||||
mock_engine.has_error = True
|
||||
failing_component_id = "comp_filter"
|
||||
error = RuntimeError("Data processing failed unexpectedly")
|
||||
mock_engine.errors = {failing_component_id: error}
|
||||
mock_engine.errors = {failing_component_id: DataProcessorError(failing_component_id, error)}
|
||||
mock_engine.run_to_list.return_value = []
|
||||
mocker.patch.object(player, '_get_engine', return_value=mock_engine)
|
||||
|
||||
@@ -168,7 +171,7 @@ def test_run_with_failure_in_middle_component(player, mocker):
|
||||
|
||||
# 3. Assert: Check the state of each component in the chain
|
||||
assert player.has_error
|
||||
assert f"Error in component 'Default': {error}" in player.global_error
|
||||
assert f"Error in component 'comp_filter':" in player.global_error
|
||||
assert player.runtime_states["comp_producer"].state == ComponentState.SUCCESS
|
||||
assert player.runtime_states[failing_component_id].state == ComponentState.FAILURE
|
||||
assert str(error) in player.runtime_states[failing_component_id].error_message
|
||||
@@ -180,9 +183,8 @@ def test_run_with_empty_workflow(player, mocker):
|
||||
Tests that running a workflow with no components completes without errors.
|
||||
"""
|
||||
# 1. Arrange: Clear components and connections
|
||||
player._player_settings.components = []
|
||||
player._player_settings.connections = []
|
||||
player.runtime_states = {}
|
||||
player._designer._state.components = {}
|
||||
player._designer._state.connections = []
|
||||
spy_get_engine = mocker.spy(player, '_get_engine')
|
||||
|
||||
# 2. Act
|
||||
@@ -190,9 +192,8 @@ def test_run_with_empty_workflow(player, mocker):
|
||||
|
||||
# 3. Assert: Ensure it finishes cleanly with no data
|
||||
assert not player.has_error
|
||||
assert player.global_error is None
|
||||
assert player.get_dataframe().empty
|
||||
spy_get_engine.assert_called_once()
|
||||
assert player.global_error == 'No connections defined.'
|
||||
spy_get_engine.assert_not_called()
|
||||
|
||||
|
||||
def test_run_with_global_engine_error(player, mocker):
|
||||
|
||||
Reference in New Issue
Block a user