@@ -7319,117 +7319,3 @@ def test_file_search_tool_basic():
73197319 assert agent is not None
73207320
73217321
7322- def test_file_search_tool_mapping ():
7323- """Test the _map_file_search_tool_call function."""
7324- from unittest .mock import Mock
7325-
7326- from pydantic_ai .models .openai import _map_file_search_tool_call
7327-
7328- # Create a mock ResponseFileSearchToolCall
7329- mock_item = Mock ()
7330- mock_item .id = 'fs_test123'
7331- mock_item .status = 'completed'
7332- mock_item .action = None # Test without action first
7333-
7334- call_part , return_part = _map_file_search_tool_call (mock_item , 'openai' )
7335-
7336- assert call_part .tool_name == 'file_search'
7337- assert call_part .tool_call_id == 'fs_test123'
7338- assert call_part .args is None
7339- assert return_part .tool_name == 'file_search'
7340- assert return_part .tool_call_id == 'fs_test123'
7341- assert return_part .content == {'status' : 'completed' }
7342-
7343- # Test with action
7344- mock_action = Mock ()
7345- mock_action .model_dump = Mock (return_value = {'query' : 'test query' })
7346- mock_item .action = mock_action
7347-
7348- call_part , return_part = _map_file_search_tool_call (mock_item , 'openai' )
7349- assert call_part .args == {'query' : 'test query' }
7350-
7351-
7352- async def test_file_search_tool_with_mock_responses (allow_model_requests : None ):
7353- """Test FileSearchTool with mocked OpenAI Responses API."""
7354- from unittest .mock import Mock
7355-
7356- from pydantic_ai .models .openai import OpenAIResponsesModel
7357-
7358- from .mock_openai import MockOpenAIResponses , response_message
7359-
7360- # Create mock file_search_call item
7361- fs_call = Mock ()
7362- fs_call .type = 'file_search_call'
7363- fs_call .id = 'fs_test'
7364- fs_call .status = 'completed'
7365- fs_call .action = Mock ()
7366- fs_call .action .model_dump = Mock (return_value = {'query' : 'search documents' })
7367-
7368- # Create message item
7369- msg_content = Mock ()
7370- msg_content .type = 'text'
7371- msg_content .text = 'Found information in documents'
7372-
7373- msg_item = Mock ()
7374- msg_item .type = 'message'
7375- msg_item .id = 'msg_test'
7376- msg_item .role = 'assistant'
7377- msg_item .content = [msg_content ]
7378- msg_item .status = 'completed'
7379-
7380- # Create response with both items
7381- mock_response = response_message ([fs_call , msg_item ])
7382- mock_responses = MockOpenAIResponses .create_mock (mock_response )
7383-
7384- model = OpenAIResponsesModel ('gpt-5' )
7385- model ._client = mock_responses
7386-
7387- agent = Agent (model , builtin_tools = [FileSearchTool (vector_store_ids = ['vs_test' ])])
7388-
7389- result = await agent .run ('Search my documents' )
7390- assert 'Found information in documents' in result .output
7391-
7392-
7393- async def test_file_search_tool_streaming (allow_model_requests : None ):
7394- """Test FileSearchTool with streaming responses."""
7395- from unittest .mock import Mock
7396-
7397- from pydantic_ai .models .openai import OpenAIResponsesModel
7398-
7399- from .mock_openai import MockOpenAIResponses
7400-
7401- # Create file_search_call stream event
7402- fs_event = Mock ()
7403- fs_event .type = 'response.output_item.added'
7404- fs_event .item = Mock ()
7405- fs_event .item .type = 'file_search_call'
7406- fs_event .item .id = 'fs_123'
7407- fs_event .item .status = 'completed'
7408- fs_event .item .action = Mock ()
7409- fs_event .item .action .model_dump = Mock (return_value = {'query' : 'test' })
7410-
7411- # Create message stream event
7412- msg_event = Mock ()
7413- msg_event .type = 'response.output_item.added'
7414- msg_event .item = Mock ()
7415- msg_event .item .type = 'message'
7416- msg_event .item .id = 'msg_123'
7417- msg_event .item .role = 'assistant'
7418- msg_event .item .status = 'completed'
7419- msg_content = Mock ()
7420- msg_content .type = 'text'
7421- msg_content .text = 'Result from files'
7422- msg_event .item .content = [msg_content ]
7423-
7424- mock_responses = MockOpenAIResponses .create_mock_stream ([fs_event , msg_event ])
7425-
7426- model = OpenAIResponsesModel ('gpt-5' )
7427- model ._client = mock_responses
7428-
7429- agent = Agent (model , builtin_tools = [FileSearchTool (vector_store_ids = ['vs_test' ])])
7430-
7431- async with agent .run_stream ('Search my documents' ) as result :
7432- async for _ in result .stream ():
7433- pass
7434-
7435- assert 'Result from files' in result .output
0 commit comments