def METHOD_NAME(mock_find_or_create_tool, mock_query, mock_commit, mock_add):
    mock_find_or_create_tool.return_value = MagicMock(id=2)
    mock_query.return_value.filter.return_value.first.return_value = None  # to simulate workflow_step not exists yet
    session = MagicMock(spec=Session)
    session.query = mock_query
    result = AgentWorkflowStep.find_or_create_tool_workflow_step(
        session=session,
        agent_workflow_id=1,
        unique_id='1',
        tool_name='test_tool',
        input_instruction='test_instruction'
    )
    assert isinstance(result, AgentWorkflowStep)
    assert result.agent_workflow_id == 1
    assert result.unique_id == '1'
    assert result.action_type == 'TOOL'
    assert result.action_reference_id == 2
    assert result.next_steps == []