flashcard-studio / tests /test_models.py
Nathan Slaughter
refactor
8428312
import json
from app.models import Card, Message
# Tests for Card and Message models
def test_card_model():
card = Card(question="What is Python?", answer="A programming language")
assert card.question == "What is Python?"
assert card.answer == "A programming language"
def test_message_model():
cards = [
Card(question="What is AI?", answer="Artificial Intelligence"),
Card(question="What is ML?", answer="Machine Learning")
]
message = Message(role="assistant", content=cards)
assert message.role == "assistant"
assert len(message.content) == 2
assert message.content[0].question == "What is AI?"
def test_message_content_json_parsing():
json_content = '[{"question": "Q1", "answer": "A1"}, {"question": "Q2", "answer": "A2"}]'
message = Message(role="assistant", content=json_content)
assert len(message.content) == 2
assert message.content[0].question == "Q1"
def test_message_content_to_json():
cards = [Card(question="Q1", answer="A1"), Card(question="Q2", answer="A2")]
message = Message(role="assistant", content=cards)
json_output = message.content_to_json()
assert json.loads(json_output) == [
{"question": "Q1", "answer": "A1"},
{"question": "Q2", "answer": "A2"}
]
# failed test
def test_message_content_to_csv():
cards = [Card(question="Q1", answer="A1"), Card(question="Q2", answer="A2")]
message = Message(role="assistant", content=cards)
csv_output = message.content_to_csv()
expected_output = "Question,Answer\nQ1,A1\nQ2,A2\n" # Use Unix-style line endings
print(csv_output) # Optional: for debugging purposes
assert csv_output == expected_output