import pytest
from django.contrib.auth import get_user_model
from django.utils import timezone
from scrobbles.models import Scrobble
from workouts.models import Exercise, WorkoutLogData, WorkoutRoutine

User = get_user_model()


@pytest.fixture
def user(db):
    return User.objects.create(email="lifter@example.com")


@pytest.fixture
def exercise(db):
    return Exercise.objects.create(
        name="Deadlift",
        force="pull",
        level="intermediate",
        mechanic="compound",
        equipment="barbell",
        category="strength",
        primary_muscles=["lower back"],
        secondary_muscles=["glutes"],
        instructions=["Step 1", "Step 2"],
    )


@pytest.fixture
def workout_routine(db):
    return WorkoutRoutine.objects.create(title="Test Routine")


@pytest.fixture
def workout_scrobble(user, workout_routine, exercise):
    return Scrobble.objects.create(
        user=user,
        workout_routine=workout_routine,
        media_type=Scrobble.MediaType.WORKOUT,
        timestamp=timezone.now(),
        played_to_completion=True,
        log={
            "workouts": [
                {"exercise_id": exercise.id, "sets": 3, "reps": 10, "weight_kg": 50.0}
            ],
            "duration_minutes": 45,
            "bodyweight_kg": 80.0,
        },
    )


@pytest.fixture
def logdata():
    return WorkoutLogData()
