code quality run

This commit is contained in:
2025-09-13 21:58:54 +02:00
parent 0dfd885847
commit 3eb18ef91e
63 changed files with 1802 additions and 1289 deletions

View File

@@ -1,9 +1,11 @@
# tests/test_background_tasks.py
from datetime import datetime
from unittest.mock import AsyncMock, patch
import pytest
from unittest.mock import patch, AsyncMock
from app.tasks.background_tasks import process_marketplace_import
from models.database_models import MarketplaceImportJob
from datetime import datetime
class TestBackgroundTasks:
@@ -17,7 +19,7 @@ class TestBackgroundTasks:
shop_name="TESTSHOP",
marketplace="TestMarket",
shop_id=test_shop.id,
user_id=test_user.id
user_id=test_user.id,
)
db.add(job)
db.commit()
@@ -27,29 +29,30 @@ class TestBackgroundTasks:
job_id = job.id
# Mock CSV processor and prevent session from closing
with patch('app.tasks.background_tasks.CSVProcessor') as mock_processor, \
patch('app.tasks.background_tasks.SessionLocal', return_value=db):
with patch("app.tasks.background_tasks.CSVProcessor") as mock_processor, patch(
"app.tasks.background_tasks.SessionLocal", return_value=db
):
mock_instance = mock_processor.return_value
mock_instance.process_marketplace_csv_from_url = AsyncMock(return_value={
"imported": 10,
"updated": 5,
"total_processed": 15,
"errors": 0
})
mock_instance.process_marketplace_csv_from_url = AsyncMock(
return_value={
"imported": 10,
"updated": 5,
"total_processed": 15,
"errors": 0,
}
)
# Run background task
await process_marketplace_import(
job_id,
"http://example.com/test.csv",
"TestMarket",
"TESTSHOP",
1000
job_id, "http://example.com/test.csv", "TestMarket", "TESTSHOP", 1000
)
# Re-query the job using the stored ID
updated_job = db.query(MarketplaceImportJob).filter(
MarketplaceImportJob.id == job_id
).first()
updated_job = (
db.query(MarketplaceImportJob)
.filter(MarketplaceImportJob.id == job_id)
.first()
)
assert updated_job is not None
assert updated_job.status == "completed"
@@ -70,7 +73,7 @@ class TestBackgroundTasks:
shop_name="TESTSHOP",
marketplace="TestMarket",
shop_id=test_shop.id,
user_id=test_user.id
user_id=test_user.id,
)
db.add(job)
db.commit()
@@ -80,8 +83,9 @@ class TestBackgroundTasks:
job_id = job.id
# Mock CSV processor to raise exception
with patch('app.tasks.background_tasks.CSVProcessor') as mock_processor, \
patch('app.tasks.background_tasks.SessionLocal', return_value=db):
with patch("app.tasks.background_tasks.CSVProcessor") as mock_processor, patch(
"app.tasks.background_tasks.SessionLocal", return_value=db
):
mock_instance = mock_processor.return_value
mock_instance.process_marketplace_csv_from_url = AsyncMock(
@@ -96,7 +100,7 @@ class TestBackgroundTasks:
"http://example.com/test.csv",
"TestMarket",
"TESTSHOP",
1000
1000,
)
except Exception:
# The background task should handle exceptions internally
@@ -104,9 +108,11 @@ class TestBackgroundTasks:
pass
# Re-query the job using the stored ID
updated_job = db.query(MarketplaceImportJob).filter(
MarketplaceImportJob.id == job_id
).first()
updated_job = (
db.query(MarketplaceImportJob)
.filter(MarketplaceImportJob.id == job_id)
.first()
)
assert updated_job is not None
assert updated_job.status == "failed"
@@ -115,15 +121,18 @@ class TestBackgroundTasks:
@pytest.mark.asyncio
async def test_marketplace_import_job_not_found(self, db):
"""Test handling when import job doesn't exist"""
with patch('app.tasks.background_tasks.CSVProcessor') as mock_processor, \
patch('app.tasks.background_tasks.SessionLocal', return_value=db):
with patch("app.tasks.background_tasks.CSVProcessor") as mock_processor, patch(
"app.tasks.background_tasks.SessionLocal", return_value=db
):
mock_instance = mock_processor.return_value
mock_instance.process_marketplace_csv_from_url = AsyncMock(return_value={
"imported": 10,
"updated": 5,
"total_processed": 15,
"errors": 0
})
mock_instance.process_marketplace_csv_from_url = AsyncMock(
return_value={
"imported": 10,
"updated": 5,
"total_processed": 15,
"errors": 0,
}
)
# Run background task with non-existent job ID
await process_marketplace_import(
@@ -131,7 +140,7 @@ class TestBackgroundTasks:
"http://example.com/test.csv",
"TestMarket",
"TESTSHOP",
1000
1000,
)
# Should not raise an exception, just log and return
@@ -148,7 +157,7 @@ class TestBackgroundTasks:
shop_name="TESTSHOP",
marketplace="TestMarket",
shop_id=test_shop.id,
user_id=test_user.id
user_id=test_user.id,
)
db.add(job)
db.commit()
@@ -158,29 +167,30 @@ class TestBackgroundTasks:
job_id = job.id
# Mock CSV processor with some errors
with patch('app.tasks.background_tasks.CSVProcessor') as mock_processor, \
patch('app.tasks.background_tasks.SessionLocal', return_value=db):
with patch("app.tasks.background_tasks.CSVProcessor") as mock_processor, patch(
"app.tasks.background_tasks.SessionLocal", return_value=db
):
mock_instance = mock_processor.return_value
mock_instance.process_marketplace_csv_from_url = AsyncMock(return_value={
"imported": 8,
"updated": 5,
"total_processed": 15,
"errors": 2
})
mock_instance.process_marketplace_csv_from_url = AsyncMock(
return_value={
"imported": 8,
"updated": 5,
"total_processed": 15,
"errors": 2,
}
)
# Run background task
await process_marketplace_import(
job_id,
"http://example.com/test.csv",
"TestMarket",
"TESTSHOP",
1000
job_id, "http://example.com/test.csv", "TestMarket", "TESTSHOP", 1000
)
# Re-query the job using the stored ID
updated_job = db.query(MarketplaceImportJob).filter(
MarketplaceImportJob.id == job_id
).first()
updated_job = (
db.query(MarketplaceImportJob)
.filter(MarketplaceImportJob.id == job_id)
.first()
)
assert updated_job is not None
assert updated_job.status == "completed_with_errors"