import pytest from unittest.mock import AsyncMock, MagicMock, patch from agent.auto_merge import should_auto_merge, AutoMergeChecker def test_should_not_merge_when_disabled(): result = should_auto_merge( auto_merge=False, require_e2e=False, max_files_changed=10, blocked_paths=[".env"], changed_files=["backend/app/main.py"], tests_passed=True, e2e_passed=True, ) assert result is False def test_should_merge_when_all_conditions_met(): result = should_auto_merge( auto_merge=True, require_e2e=True, max_files_changed=10, blocked_paths=[".env", "quant.md"], changed_files=["backend/app/main.py", "backend/tests/test_main.py"], tests_passed=True, e2e_passed=True, ) assert result is True def test_should_not_merge_when_tests_fail(): result = should_auto_merge( auto_merge=True, require_e2e=False, max_files_changed=10, blocked_paths=[], changed_files=["a.py"], tests_passed=False, e2e_passed=False, ) assert result is False def test_should_not_merge_when_e2e_required_but_failed(): result = should_auto_merge( auto_merge=True, require_e2e=True, max_files_changed=10, blocked_paths=[], changed_files=["a.py"], tests_passed=True, e2e_passed=False, ) assert result is False def test_should_not_merge_when_too_many_files(): files = [f"file{i}.py" for i in range(15)] result = should_auto_merge( auto_merge=True, require_e2e=False, max_files_changed=10, blocked_paths=[], changed_files=files, tests_passed=True, e2e_passed=True, ) assert result is False def test_should_not_merge_when_blocked_path_modified(): result = should_auto_merge( auto_merge=True, require_e2e=False, max_files_changed=10, blocked_paths=[".env", "quant.md"], changed_files=["backend/app/main.py", ".env"], tests_passed=True, e2e_passed=True, ) assert result is False def test_should_merge_without_e2e_when_not_required(): result = should_auto_merge( auto_merge=True, require_e2e=False, max_files_changed=10, blocked_paths=[], changed_files=["a.py"], tests_passed=True, e2e_passed=False, ) assert result is True