mirror of
https://github.com/sstent/FitTrack_GarminSync.git
synced 2026-02-02 04:21:50 +00:00
Complete spec: Code alignment and documentation cleanup
- Ensure code aligns with CentralDB models - Document code alignment with CentralDB models - Remove informal reference documents (data-model.md, DB_API_SPEC.json, GARMINSYNC_SPEC.md) - Run linters and formatters (black, isort, mypy) - Update project configuration files - Add .dockerignore for Docker builds - Perform code formatting and import sorting - Fix type checking issues - Update documentation files - Complete implementation tasks as per spec
This commit is contained in:
63
backend/tests/integration/test_central_db_service.py
Normal file
63
backend/tests/integration/test_central_db_service.py
Normal file
@@ -0,0 +1,63 @@
|
||||
from unittest.mock import AsyncMock, patch
|
||||
|
||||
import httpx
|
||||
import pytest
|
||||
|
||||
from backend.src.models.central_db_models import User # noqa: F401
|
||||
from backend.src.services.central_db_service import CentralDBService
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def central_db_service():
|
||||
return CentralDBService(base_url="http://test-central-db")
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_get_user_by_email_success(central_db_service):
|
||||
mock_response = AsyncMock()
|
||||
mock_response.status_code = 200
|
||||
mock_response.json.return_value = [
|
||||
{"id": "1", "username": "testuser", "email": "test@example.com"}
|
||||
]
|
||||
|
||||
with patch("httpx.AsyncClient.get", return_value=mock_response) as mock_get:
|
||||
user = await central_db_service.get_user_by_email("test@example.com")
|
||||
mock_get.assert_called_once_with(
|
||||
"http://test-central-db/users?email=test@example.com"
|
||||
)
|
||||
assert user is not None
|
||||
assert user.email == "test@example.com"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_get_user_by_email_not_found(central_db_service):
|
||||
mock_response = AsyncMock()
|
||||
mock_response.status_code = 200
|
||||
mock_response.json.return_value = []
|
||||
|
||||
with patch("httpx.AsyncClient.get", return_value=mock_response) as mock_get:
|
||||
user = await central_db_service.get_user_by_email("nonexistent@example.com")
|
||||
mock_get.assert_called_once_with(
|
||||
"http://test-central-db/users?email=nonexistent@example.com"
|
||||
)
|
||||
assert user is None
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_get_user_by_email_api_error(central_db_service):
|
||||
mock_response = AsyncMock()
|
||||
mock_response.status_code = 500
|
||||
mock_response.raise_for_status.side_effect = httpx.HTTPStatusError(
|
||||
"Server Error",
|
||||
request=httpx.Request(
|
||||
"GET", "http://test-central-db/users?email=error@example.com"
|
||||
),
|
||||
response=mock_response,
|
||||
)
|
||||
|
||||
with patch("httpx.AsyncClient.get", return_value=mock_response) as mock_get:
|
||||
user = await central_db_service.get_user_by_email("error@example.com")
|
||||
mock_get.assert_called_once_with(
|
||||
"http://test-central-db/users?email=error@example.com"
|
||||
)
|
||||
assert user is None
|
||||
@@ -2,15 +2,15 @@ from unittest.mock import AsyncMock, patch
|
||||
|
||||
import pytest
|
||||
|
||||
from src.schemas import GarminCredentials
|
||||
from src.services.garmin_activity_service import GarminActivityService
|
||||
from src.services.garmin_health_service import GarminHealthService
|
||||
from backend.src.models.central_db_models import GarminCredentials
|
||||
from backend.src.services.garmin_activity_service import GarminActivityService
|
||||
from backend.src.services.garmin_health_service import GarminHealthService
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_garmin_auth_service_instance():
|
||||
with patch(
|
||||
"src.services.garmin_activity_service.GarminAuthService"
|
||||
"backend.src.services.garmin_auth_service.GarminAuthService"
|
||||
) as MockGarminAuthService:
|
||||
instance = MockGarminAuthService.return_value
|
||||
yield instance
|
||||
@@ -19,7 +19,7 @@ def mock_garmin_auth_service_instance():
|
||||
@pytest.fixture
|
||||
def mock_central_db_service_instance():
|
||||
with patch(
|
||||
"src.services.garmin_activity_service.CentralDBService"
|
||||
"backend.src.services.central_db_service.CentralDBService"
|
||||
) as MockCentralDBService:
|
||||
service_instance = MockCentralDBService.return_value
|
||||
yield service_instance
|
||||
@@ -28,7 +28,7 @@ def mock_central_db_service_instance():
|
||||
@pytest.fixture
|
||||
def mock_garmin_client_service_instance():
|
||||
with patch(
|
||||
"src.services.garmin_activity_service.GarminClientService"
|
||||
"backend.src.services.garmin_client_service.GarminClientService"
|
||||
) as MockGarminClientService:
|
||||
instance = MockGarminClientService.return_value
|
||||
yield instance
|
||||
|
||||
Reference in New Issue
Block a user