multi-agent-system / tests /test_models_new.py
firepenguindisopanda
feat(01-01): consolidate SQLAlchemy models into single models.py
d9aaa76
Raw
History Blame Contribute Delete
3.56 kB
"""Tests for new SQLAlchemy models."""
import pytest
from sqlalchemy import create_engine
from sqlalchemy.orm import Session
from app.core.database import Base
from app.core.models import (
AuditLog,
Checkpoint,
FeedbackEntry,
TokenUsageRecord,
)
@pytest.fixture
def db_session():
"""Create a test database session."""
engine = create_engine("sqlite:///./test_new_models.db")
Base.metadata.create_all(bind=engine)
session = Session(engine)
yield session
session.close()
Base.metadata.drop_all(bind=engine)
def test_audit_log_creation(db_session):
"""Test creating an audit log entry."""
entry = AuditLog(
user_id=1,
action="prd.create",
resource_type="prd_document",
resource_id="test-session-id",
details={"key": "value"},
ip_address="192.168.1.1",
)
db_session.add(entry)
db_session.commit()
assert entry.id is not None
assert entry.action == "prd.create"
assert entry.details == {"key": "value"}
def test_token_usage_record(db_session):
"""Test creating a token usage record."""
record = TokenUsageRecord(
user_id=1,
project_id=1,
operation="prd_generation",
model="gpt-4",
input_tokens=1500,
output_tokens=3000,
total_tokens=4500,
cost_usd=0.15,
latency_ms=2500,
)
db_session.add(record)
db_session.commit()
assert record.id is not None
assert record.total_tokens == 4500
assert record.cost_usd == 0.15
def test_checkpoint_creation(db_session):
"""Test creating a checkpoint."""
checkpoint = Checkpoint(
checkpoint_id="test-uuid-123",
project_id=1,
session_id="test-session",
role="product_owner",
message="PRD evaluation complete",
status="pending",
)
db_session.add(checkpoint)
db_session.commit()
assert checkpoint.checkpoint_id == "test-uuid-123"
assert checkpoint.status == "pending"
def test_checkpoint_approval(db_session):
"""Test approving a checkpoint."""
checkpoint = Checkpoint(
checkpoint_id="test-uuid-456",
role="judge",
message="Judge evaluation",
status="pending",
)
db_session.add(checkpoint)
db_session.commit()
checkpoint.status = "approved"
db_session.commit()
retrieved = db_session.query(Checkpoint).filter_by(
checkpoint_id="test-uuid-456"
).first()
assert retrieved.status == "approved"
def test_feedback_entry_creation(db_session):
"""Test creating a feedback entry."""
entry = FeedbackEntry(
feedback_id="FB-001",
title="Missing features",
status="open",
source="judge",
phase=3,
detail="PRD is missing key features section",
)
db_session.add(entry)
db_session.commit()
assert entry.id is not None
assert entry.feedback_id == "FB-001"
assert entry.status == "open"
def test_feedback_resolution(db_session):
"""Test resolving a feedback entry."""
entry = FeedbackEntry(
feedback_id="FB-002",
title="Test feedback",
status="open",
source="judge",
detail="Test detail",
)
db_session.add(entry)
db_session.commit()
entry.status = "resolved"
entry.resolution = "Fixed"
db_session.commit()
retrieved = db_session.query(FeedbackEntry).filter_by(
feedback_id="FB-002"
).first()
assert retrieved.status == "resolved"
assert retrieved.resolution == "Fixed"