Files
orion/tests/fixtures/testing_fixtures.py
Samir Boulahtit 21c13ca39b style: apply black and isort formatting across entire codebase
- Standardize quote style (single to double quotes)
- Reorder and group imports alphabetically
- Fix line breaks and indentation for consistency
- Apply PEP 8 formatting standards

Also updated Makefile to exclude both venv and .venv from code quality checks.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 19:30:17 +01:00

56 lines
1.6 KiB
Python

# tests/fixtures/testing_fixtures.py
"""
Testing utility fixtures for edge cases and error handling.
This module provides fixtures for:
- Empty database sessions for edge case testing
- Mock database sessions for error simulation
- Additional testing utilities
"""
from unittest.mock import Mock
import pytest
from sqlalchemy.exc import SQLAlchemyError
@pytest.fixture
def empty_db(db):
"""Empty database session for edge case testing"""
from sqlalchemy import text
# Clear only the tables that are relevant for admin service testing
# In order to respect foreign key constraints
tables_to_clear = [
"marketplace_import_jobs", # Has foreign keys to vendors and users
"products", # Has foreign keys to vendors and products
"inventory", # Fixed: singular not plural
"products", # Referenced by products
"vendors", # Has foreign key to users
"users", # Base table
]
for table in tables_to_clear:
try:
db.execute(text(f"DELETE FROM {table}"))
except Exception:
# If table doesn't exist or delete fails, continue
pass
db.commit()
return db
@pytest.fixture
def db_with_error():
"""Database session that raises errors for testing error handling"""
mock_db = Mock()
# Configure the mock to raise SQLAlchemy errors on query operations
mock_db.query.side_effect = SQLAlchemyError("Database connection failed")
mock_db.add.side_effect = SQLAlchemyError("Database insert failed")
mock_db.commit.side_effect = SQLAlchemyError("Database commit failed")
mock_db.rollback.return_value = None
return mock_db