Spaces:
Sleeping
Sleeping
File size: 1,996 Bytes
7554bb0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | import pytest
from src.core.progress_tracker import ProgressTracker
def test_add_xp_unlocks_badge():
tracker = ProgressTracker()
# Earn 60 XP – should unlock "First Steps" (threshold 50)
tracker.add_xp(60)
assert tracker.xp == 60
assert "First Steps" in tracker.badges
def test_increment_tasks_unlocks_wordsmith():
tracker = ProgressTracker()
# Complete 10 tasks
for _ in range(10):
tracker.increment_tasks()
assert tracker.tasks_completed == 10
assert "Wordsmith" in tracker.badges
def test_html_dashboard_reflects_state():
tracker = ProgressTracker()
tracker.add_xp(120)
html = tracker.html_dashboard()
# Ensure XP appears in the HTML
assert str(tracker.xp) in html
# Earn badge and verify it's in HTML
assert "First Steps" in html
def test_multiple_xp_increments():
tracker = ProgressTracker()
tracker.add_xp(30)
tracker.add_xp(40)
assert tracker.xp == 70
assert "First Steps" in tracker.badges # Threshold 50 XP
def test_skill_tracking():
tracker = ProgressTracker()
tracker.update_skill("grammar", 5)
tracker.update_skill("vocabulary", 3)
assert tracker.skills["grammar"] == 5
assert tracker.skills["vocabulary"] == 3
assert "grammar: 5" in tracker.html_dashboard()
def test_edge_cases():
tracker = ProgressTracker()
# Test XP negativo
tracker.add_xp(-10)
assert tracker.xp == 0
# Teste muitas tarefas
for _ in range(10):
tracker.increment_tasks()
assert tracker.tasks_completed == 10
assert "Wordsmith" in tracker.badges
def test_badge_progression():
tracker = ProgressTracker()
# Teste progressão de badges
assert len(tracker.badges) == 0
tracker.add_xp(40)
assert len(tracker.badges) == 0 # Ainda não atingiu threshold
tracker.add_xp(20) # Total 60 XP
assert "First Steps" in tracker.badges
tracker.add_xp(200) # Total 260 XP
assert "Getting Warmer" in tracker.badges
|