Files
Aether/tests/services/test_user_bulk_cleanup.py

36 lines
1.1 KiB
Python
Raw Normal View History

from __future__ import annotations
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.orm import Session, declarative_base, sessionmaker
from src.services.user.bulk_cleanup import batch_nullify_fk
Base = declarative_base()
class DemoRow(Base):
__tablename__ = "demo_rows"
id = Column(Integer, primary_key=True, autoincrement=True)
ref_id = Column(String(36), nullable=True)
def test_batch_nullify_fk_handles_sqlite_batches() -> None:
engine = create_engine("sqlite:///:memory:")
Base.metadata.create_all(engine)
session_factory = sessionmaker(bind=engine)
db: Session = session_factory()
try:
db.add_all([DemoRow(ref_id="entity-1") for _ in range(905)])
db.add_all([DemoRow(ref_id="entity-2") for _ in range(3)])
db.commit()
updated = batch_nullify_fk(db, DemoRow, "ref_id", "entity-1")
assert updated == 905
assert db.query(DemoRow).filter(DemoRow.ref_id.is_(None)).count() == 905
assert db.query(DemoRow).filter(DemoRow.ref_id == "entity-2").count() == 3
finally:
db.close()