New alert service

This commit is contained in:
Urtzi Alfaro
2025-12-05 20:07:01 +01:00
parent 1fe3a73549
commit 667e6e0404
393 changed files with 26002 additions and 61033 deletions

View File

@@ -0,0 +1,96 @@
import pytest
from fastapi.testclient import TestClient
from unittest.mock import AsyncMock, MagicMock, patch
from datetime import date
import uuid
from app.main import app
from app.api.batch import SalesSummaryBatchRequest, SalesSummary
client = TestClient(app)
@pytest.fixture
def mock_sales_service():
with patch("app.api.batch.get_sales_service") as mock:
service = AsyncMock()
mock.return_value = service
yield service
@pytest.fixture
def mock_current_user():
with patch("app.api.batch.get_current_user_dep") as mock:
mock.return_value = {
"user_id": str(uuid.uuid4()),
"role": "admin",
"tenant_id": str(uuid.uuid4())
}
yield mock
def test_get_sales_summary_batch_success(mock_sales_service, mock_current_user):
# Setup
tenant_id_1 = str(uuid.uuid4())
tenant_id_2 = str(uuid.uuid4())
request_data = {
"tenant_ids": [tenant_id_1, tenant_id_2],
"start_date": "2025-01-01",
"end_date": "2025-01-31"
}
# Mock service response
mock_sales_service.get_sales_analytics.side_effect = [
{
"total_revenue": 1000.0,
"total_orders": 10,
"average_order_value": 100.0
},
{
"total_revenue": 2000.0,
"total_orders": 20,
"average_order_value": 100.0
}
]
# Execute
response = client.post("/api/v1/batch/sales-summary", json=request_data)
# Verify
assert response.status_code == 200
data = response.json()
assert len(data) == 2
assert data[tenant_id_1]["total_revenue"] == 1000.0
assert data[tenant_id_2]["total_revenue"] == 2000.0
# Verify service calls
assert mock_sales_service.get_sales_analytics.call_count == 2
def test_get_sales_summary_batch_empty(mock_sales_service, mock_current_user):
# Setup
request_data = {
"tenant_ids": [],
"start_date": "2025-01-01",
"end_date": "2025-01-31"
}
# Execute
response = client.post("/api/v1/batch/sales-summary", json=request_data)
# Verify
assert response.status_code == 200
assert response.json() == {}
def test_get_sales_summary_batch_limit_exceeded(mock_sales_service, mock_current_user):
# Setup
tenant_ids = [str(uuid.uuid4()) for _ in range(101)]
request_data = {
"tenant_ids": tenant_ids,
"start_date": "2025-01-01",
"end_date": "2025-01-31"
}
# Execute
response = client.post("/api/v1/batch/sales-summary", json=request_data)
# Verify
assert response.status_code == 400
assert "Maximum 100 tenant IDs allowed" in response.json()["detail"]