fix: resolve CI test failures with proper mock patching
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user