import pytest
from django.urls import reverse

@pytest.fixture
def logged_in_admin(client, django_user_model):
    admin = django_user_model.objects.create_superuser(
        username="admin",
        email="admin@example.com",
        password="adminpassword"
    )
    client.force_login(admin)
    return admin

@pytest.mark.django_db
def test_physics_stats_only_no_attribute_error(client, logged_in_admin):
    from physics.models import Exam, Question, UserAnswer
    exam = Exam.objects.create(name="Physics Test Exam", exam_mode=True)
    exam.author.add(logged_in_admin)
    
    question = Question.objects.create(
        stem="stem",
        a="a", a_answer=True,
        b="b", b_answer=False,
        c="c", c_answer=True,
        d="d", d_answer=False,
        e="e", e_answer=True,
    )
    question.exams.add(exam)
    
    UserAnswer.objects.create(
        question=question,
        exam=exam,
        a=True, b=False, c=True, d=False, e=True,
        cid=1
    )
    
    url = reverse("physics:exam_scores_all", kwargs={"pk": exam.pk})
    response = client.get(f"{url}?stats_only=true")
    assert response.status_code == 200

@pytest.mark.django_db
def test_sbas_stats_only_no_attribute_error(client, logged_in_admin):
    from sbas.models import Exam, Question, UserAnswer
    exam = Exam.objects.create(name="SBAs Test Exam", exam_mode=True)
    exam.author.add(logged_in_admin)
    
    question = Question.objects.create(
        stem="stem",
        best_answer="A",
    )
    question.exams.add(exam)
    
    UserAnswer.objects.create(
        question=question,
        exam=exam,
        answer="A",
        cid=1
    )
    
    url = reverse("sbas:exam_scores_all", kwargs={"pk": exam.pk})
    response = client.get(f"{url}?stats_only=true")
    assert response.status_code == 200
