| | import pytest |
| | from unittest.mock import patch, MagicMock |
| | from found_protocol.pipeline import FoundProtocolPipeline |
| |
|
| | @pytest.fixture |
| | def mock_genai_models(): |
| | with patch('google.generativeai.GenerativeModel') as mock_model_class: |
| | mock_vision = MagicMock() |
| | mock_vision.generate_content.return_value.text = "Mock vision description." |
| | |
| | mock_f1 = MagicMock() |
| | mock_f1.generate_content.return_value.text = '{"cli_output": "[MOCK F1] Analysis.", "detected_concepts": [], "narrative_impact": "Mock."}' |
| | |
| | mock_f2 = MagicMock() |
| | mock_f2.generate_content.return_value.text = '{"cli_output": "[MOCK F2] Compilation.", "emotional_state": "mock", "system_action": "Mock."}' |
| |
|
| | def mock_side_effect(model_name, **kwargs): |
| | if 'vision' in model_name: return mock_vision |
| | if 'FOUND-1' in kwargs.get('system_instruction', ''): return mock_f1 |
| | if 'FOUND-2' in kwargs.get('system_instruction', ''): return mock_f2 |
| | return MagicMock() |
| |
|
| | mock_model_class.side_effect = mock_side_effect |
| | yield mock_model_class |
| |
|
| | def test_pipeline_initialization(mock_genai_models): |
| | """Tests if the pipeline initializes correctly.""" |
| | pipeline = FoundProtocolPipeline(gemini_api_key="TEST_KEY") |
| | assert pipeline is not None |
| | assert "INIT" in pipeline.state.memory_log[0] |
| |
|
| | def test_pipeline_run_mocked(tmp_path, mock_genai_models): |
| | """Tests a full run with mocked API calls.""" |
| | dummy_video = tmp_path / "dummy.mp4" |
| | dummy_video.write_bytes(b'dummy data') |
| |
|
| | with patch('cv2.VideoCapture') as mock_cap_class: |
| | mock_cap = MagicMock() |
| | mock_cap.get.return_value = 100 |
| | mock_cap.read.return_value = (True, "fake_frame") |
| | mock_cap_class.return_value = mock_cap |
| | |
| | pipeline = FoundProtocolPipeline(gemini_api_key="TEST_KEY") |
| | result = pipeline.run(str(dummy_video)) |
| | |
| | assert "error" not in result |
| | assert "found1_output" in result |
| | assert isinstance(result['found1_output'], dict) |
| | assert "cli_output" in result['found1_output'] |
| | assert "[MOCK F1]" in result['found1_output']['cli_output'] |
| |
|