59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""
 | 
						|
Test configuration and fixtures
 | 
						|
"""
 | 
						|
import pytest
 | 
						|
from fastapi.testclient import TestClient
 | 
						|
from sqlalchemy import create_engine
 | 
						|
from sqlalchemy.orm import sessionmaker
 | 
						|
from sqlalchemy.pool import StaticPool
 | 
						|
 | 
						|
from merchants_of_hope.main import app
 | 
						|
from merchants_of_hope.database import Base, get_db
 | 
						|
from merchants_of_hope.models import User, Tenant
 | 
						|
 | 
						|
 | 
						|
# Create test database
 | 
						|
SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db"
 | 
						|
 | 
						|
engine = create_engine(
 | 
						|
    SQLALCHEMY_DATABASE_URL,
 | 
						|
    connect_args={"check_same_thread": False},
 | 
						|
    poolclass=StaticPool,
 | 
						|
)
 | 
						|
TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
 | 
						|
 | 
						|
 | 
						|
@pytest.fixture(scope="module")
 | 
						|
def test_db():
 | 
						|
    """Create test database"""
 | 
						|
    Base.metadata.create_all(bind=engine)
 | 
						|
    yield engine
 | 
						|
    Base.metadata.drop_all(bind=engine)
 | 
						|
 | 
						|
 | 
						|
@pytest.fixture(scope="function")
 | 
						|
def db_session(test_db):
 | 
						|
    """Create test database session"""
 | 
						|
    connection = test_db.connect()
 | 
						|
    transaction = connection.begin()
 | 
						|
    session = TestingSessionLocal(bind=connection)
 | 
						|
    
 | 
						|
    yield session
 | 
						|
    
 | 
						|
    session.close()
 | 
						|
    transaction.rollback()
 | 
						|
    connection.close()
 | 
						|
 | 
						|
 | 
						|
@pytest.fixture(scope="module")
 | 
						|
def client(db_session):
 | 
						|
    """Create test client"""
 | 
						|
    def override_get_db():
 | 
						|
        try:
 | 
						|
            yield db_session
 | 
						|
        finally:
 | 
						|
            pass
 | 
						|
    
 | 
						|
    app.dependency_overrides[get_db] = override_get_db
 | 
						|
    with TestClient(app) as test_client:
 | 
						|
        yield test_client |