fix: resolve CI test failures with proper mock patching
Some checks failed
CI / test (push) Has been cancelled
CI / build (push) Has been cancelled

This commit is contained in:
2026-01-30 15:57:23 +00:00
parent 1f74643277
commit 0801432a2c

View File

@@ -1,8 +1,8 @@
"""Tests for api.py."""
import pytest
import requests
from unittest.mock import patch, MagicMock
from gitignore_generator import api
from gitignore_generator.api import (
get_patterns,
get_patterns_batch,
@@ -45,7 +45,9 @@ class TestGetPatterns:
with patch('gitignore_generator.api.CACHE_DIR', tmp_path):
with patch('gitignore_generator.api.TEMPLATES_DIR', tmp_path):
with patch('gitignore_generator.api.requests.get') as mock_get:
mock_get.side_effect = Exception("Network error")
def raise_error(*args, **kwargs):
raise requests.RequestException("Network error")
mock_get.side_effect = raise_error
result = get_patterns('python')
assert result == "local template content"
@@ -65,7 +67,9 @@ class TestGetPatterns:
with patch('gitignore_generator.api.CACHE_DIR', tmp_path):
with patch('gitignore_generator.api.TEMPLATES_DIR', tmp_path):
with patch('gitignore_generator.api.requests.get') as mock_get:
mock_get.side_effect = Exception("Network error")
def raise_error(*args, **kwargs):
raise requests.RequestException("Network error")
mock_get.side_effect = raise_error
with pytest.raises(GitignoreIOError):
get_patterns('nonexistent_xyz_123')
@@ -75,7 +79,7 @@ class TestGetPatternsBatch:
def test_get_patterns_batch_multiple_techs(self):
"""Test fetching patterns for multiple technologies."""
def mock_get(url):
def mock_get(url, **kwargs):
response = MagicMock()
if 'node' in url:
response.text = "node_modules/"
@@ -84,8 +88,8 @@ class TestGetPatternsBatch:
response.raise_for_status = MagicMock()
return response
with patch('gitignore_generator.api.requests.get', side_effect=mock_get):
result = get_patterns_batch(['node', 'python'])
with patch.object(api.requests, 'get', side_effect=mock_get):
result = get_patterns_batch(['node', 'python'], force_refresh=True)
assert 'node' in result
assert 'python' in result
assert 'node_modules' in result['node']
@@ -93,15 +97,15 @@ class TestGetPatternsBatch:
def test_get_patterns_batch_handles_errors(self):
"""Test batch fetch continues on individual errors."""
def mock_get(url):
def mock_get(url, **kwargs):
response = MagicMock()
if 'unknown' in url:
raise Exception("Network error")
raise requests.RequestException("Network error")
response.text = "content"
response.raise_for_status = MagicMock()
return response
with patch('gitignore_generator.api.requests.get', side_effect=mock_get):
with patch.object(api.requests, 'get', side_effect=mock_get):
result = get_patterns_batch(['python', 'unknown_xyz_123'])
assert 'python' in result
assert 'unknown_xyz_123' in result
@@ -114,7 +118,7 @@ class TestGetList:
def test_get_list_from_api(self):
"""Test fetching list from API."""
mock_response = MagicMock()
mock_response.text = "python,node\ndjango,flask\n"
mock_response.text = "python\nnode\ndjango\nflask\n"
mock_response.raise_for_status = MagicMock()
with patch('gitignore_generator.api.requests.get') as mock_get: