ai-textbook-backend / tests /unit /test_feedback_model.py
AI Development Team
feat(ui): AgentFactory-inspired dark theme redesign
5c4bfe8
"""
Unit tests for TranslationFeedback model
Tests:
- test_create_translation_feedback: Verify feedback creation
- test_feedback_foreign_key_constraint: Verify FK relationship to translations
"""
import pytest
from models.translation_feedback import TranslationFeedback
from models.translation import Translation
from database.models import User
from database.db import get_db_session
import uuid
from datetime import datetime
@pytest.mark.asyncio
async def test_create_translation_feedback():
"""Test creating a translation feedback record"""
# Arrange
feedback_id = uuid.uuid4()
translation_id = uuid.uuid4()
user_id = uuid.uuid4()
issue_description = "Technical term 'API' was incorrectly translated to Urdu"
# Act
feedback = TranslationFeedback(
id=feedback_id,
translation_id=translation_id,
user_id=user_id,
issue_description=issue_description,
created_at=datetime.utcnow()
)
# Assert
assert feedback.id == feedback_id
assert feedback.translation_id == translation_id
assert feedback.user_id == user_id
assert feedback.issue_description == issue_description
assert feedback.created_at is not None
print(f"✅ TranslationFeedback model created: {feedback}")
@pytest.mark.asyncio
async def test_feedback_foreign_key_constraint():
"""Test that feedback links to translation record via FK"""
# Arrange
translation_id = uuid.uuid4()
user_id = uuid.uuid4()
# Act
feedback = TranslationFeedback(
id=uuid.uuid4(),
translation_id=translation_id, # FK to translations table
user_id=user_id, # FK to users table
issue_description="Translation quality issue",
created_at=datetime.utcnow()
)
# Assert
assert feedback.translation_id == translation_id
assert hasattr(feedback, 'translation_id'), "Feedback must have translation_id FK"
assert hasattr(feedback, 'user_id'), "Feedback must have user_id FK"
print(f"✅ Foreign key constraint verified: translation_id={translation_id}")
def test_feedback_model_repr():
"""Test __repr__ method for debugging"""
feedback = TranslationFeedback(
id=uuid.uuid4(),
translation_id=uuid.uuid4(),
user_id=uuid.uuid4(),
issue_description="Test issue",
created_at=datetime.utcnow()
)
repr_str = repr(feedback)
assert "TranslationFeedback" in repr_str
assert "issue_description" in repr_str or "translation_id" in repr_str
print(f"✅ Model repr: {repr_str}")