order and api and more
This commit is contained in:
95
tests/test_set_label_routes.py
Normal file
95
tests/test_set_label_routes.py
Normal file
@ -0,0 +1,95 @@
|
||||
from fastapi.testclient import TestClient
|
||||
from unittest.mock import patch, MagicMock
|
||||
from app.main import app
|
||||
from app.services.set_label_service import SetLabelService
|
||||
from sqlalchemy.orm import Session
|
||||
from app.db.database import get_db
|
||||
import asyncio
|
||||
|
||||
client = TestClient(app)
|
||||
|
||||
def test_generate_set_labels_success():
|
||||
# Mock the SetLabelService
|
||||
with patch('app.routes.set_label_routes.set_label_service') as mock_service:
|
||||
# Setup mock
|
||||
mock_service.generate_labels.return_value = asyncio.Future()
|
||||
mock_service.generate_labels.return_value.set_result([
|
||||
"app/data/cache/set_labels/MH1.pdf",
|
||||
"app/data/cache/set_labels/NEO.pdf"
|
||||
])
|
||||
|
||||
# Make request
|
||||
response = client.post("/api/set-labels/generate", json={"sets": ["MH1", "NEO"]})
|
||||
|
||||
# Assert response
|
||||
assert response.status_code == 200
|
||||
assert response.json() == {
|
||||
"message": "Labels generated successfully",
|
||||
"files": [
|
||||
"app/data/cache/set_labels/MH1.pdf",
|
||||
"app/data/cache/set_labels/NEO.pdf"
|
||||
]
|
||||
}
|
||||
|
||||
# Verify service was called correctly
|
||||
mock_service.generate_labels.assert_called_once_with(["MH1", "NEO"])
|
||||
|
||||
def test_generate_set_labels_error():
|
||||
# Mock the SetLabelService to raise an exception
|
||||
with patch('app.routes.set_label_routes.set_label_service') as mock_service:
|
||||
mock_service.generate_labels.side_effect = Exception("Test error")
|
||||
|
||||
# Make request
|
||||
response = client.post("/api/set-labels/generate", json={"sets": ["MH1", "NEO"]})
|
||||
|
||||
# Assert response
|
||||
assert response.status_code == 500
|
||||
assert response.json() == {"detail": "Test error"}
|
||||
|
||||
def test_get_available_sets_success():
|
||||
# Mock the database session and SetLabelService
|
||||
with patch('app.routes.set_label_routes.set_label_service') as mock_service, \
|
||||
patch('app.db.database.get_db') as mock_get_db:
|
||||
# Setup mock database session
|
||||
mock_db = MagicMock(spec=Session)
|
||||
mock_get_db.return_value = mock_db
|
||||
|
||||
# Setup mock service
|
||||
mock_sets = [
|
||||
{"code": "MH1", "name": "Modern Horizons"},
|
||||
{"code": "NEO", "name": "Kamigawa: Neon Dynasty"}
|
||||
]
|
||||
mock_service.get_available_sets.return_value = asyncio.Future()
|
||||
mock_service.get_available_sets.return_value.set_result(mock_sets)
|
||||
|
||||
# Override the dependency injection
|
||||
app.dependency_overrides[get_db] = lambda: mock_db
|
||||
|
||||
try:
|
||||
# Make request
|
||||
response = client.get("/api/set-labels/available-sets")
|
||||
|
||||
# Assert response
|
||||
assert response.status_code == 200
|
||||
assert response.json() == {
|
||||
"message": "Available sets retrieved successfully",
|
||||
"sets": mock_sets
|
||||
}
|
||||
|
||||
# Verify service was called correctly
|
||||
mock_service.get_available_sets.assert_called_once_with(mock_db)
|
||||
finally:
|
||||
# Clean up dependency override
|
||||
app.dependency_overrides.clear()
|
||||
|
||||
def test_get_available_sets_error():
|
||||
# Mock the SetLabelService to raise an exception
|
||||
with patch('app.routes.set_label_routes.set_label_service') as mock_service:
|
||||
mock_service.get_available_sets.side_effect = Exception("Test error")
|
||||
|
||||
# Make request
|
||||
response = client.get("/api/set-labels/available-sets")
|
||||
|
||||
# Assert response
|
||||
assert response.status_code == 500
|
||||
assert response.json() == {"detail": "Test error"}
|
Reference in New Issue
Block a user