55 lines
1.5 KiB
Python
55 lines
1.5 KiB
Python
import pytest
|
|
import sys
|
|
from sqlalchemy import create_engine
|
|
from sqlalchemy.orm import sessionmaker
|
|
|
|
|
|
def _drop_fake_core_database():
|
|
parent = sys.modules.get("core")
|
|
attr = getattr(parent, "database", None) if parent is not None else None
|
|
mod = sys.modules.get("core.database") or attr
|
|
if mod is None or isinstance(getattr(mod, "__file__", None), str):
|
|
return
|
|
sys.modules.pop("core.database", None)
|
|
sys.modules.pop("src.database", None)
|
|
if parent is not None and attr is mod:
|
|
delattr(parent, "database")
|
|
|
|
|
|
_drop_fake_core_database()
|
|
|
|
from core.database import Base, Session, ChatMessage
|
|
from datetime import datetime
|
|
|
|
def test_sqlite_foreign_keys_cascade():
|
|
engine = create_engine("sqlite:///:memory:", connect_args={"check_same_thread": False})
|
|
Base.metadata.create_all(bind=engine)
|
|
|
|
TestSessionLocal = sessionmaker(bind=engine)
|
|
db = TestSessionLocal()
|
|
|
|
session_id = "test-session-123"
|
|
s = Session(
|
|
id=session_id,
|
|
name="Test Session",
|
|
endpoint_url="http://localhost:8000",
|
|
model="gpt-4",
|
|
created_at=datetime.utcnow(),
|
|
updated_at=datetime.utcnow()
|
|
)
|
|
m = ChatMessage(id="test-msg-123", session_id=session_id, role="user", content="test message")
|
|
|
|
db.add(s)
|
|
db.add(m)
|
|
db.commit()
|
|
|
|
assert db.query(Session).count() == 1
|
|
assert db.query(ChatMessage).count() == 1
|
|
|
|
db.query(Session).filter(Session.id == session_id).delete()
|
|
db.commit()
|
|
|
|
assert db.query(ChatMessage).count() == 0
|
|
|
|
db.close()
|