59 lines
2.0 KiB
Python
59 lines
2.0 KiB
Python
from datetime import datetime
|
|
|
|
import pytz
|
|
from django.contrib.auth import get_user_model
|
|
from django.test import Client
|
|
from django.urls import reverse
|
|
|
|
from discgolf.models import DiscGolfCourse
|
|
from scrobbles.models import Scrobble
|
|
|
|
User = get_user_model()
|
|
|
|
|
|
class TestDiscGolfCourseViews:
|
|
def _make_scrobble(self, user, course):
|
|
dt = datetime(2026, 6, 15, 14, 0, 0, tzinfo=pytz.UTC)
|
|
return Scrobble.objects.create(
|
|
user=user,
|
|
disc_golf_course=course,
|
|
media_type=Scrobble.MediaType.DISC_GOLF,
|
|
timestamp=dt,
|
|
)
|
|
|
|
def test_course_list_anonymous(self, db, user):
|
|
course = DiscGolfCourse.objects.create(title="Maple Hill")
|
|
self._make_scrobble(user, course)
|
|
client = Client()
|
|
response = client.get(reverse("discgolf:course_list"))
|
|
assert response.status_code == 200
|
|
|
|
def test_course_list_shows_course(self, db, user):
|
|
course = DiscGolfCourse.objects.create(title="Maple Hill")
|
|
self._make_scrobble(user, course)
|
|
client = Client()
|
|
response = client.get(reverse("discgolf:course_list"))
|
|
assert response.status_code == 200
|
|
assert "Maple Hill" in response.content.decode()
|
|
|
|
def test_course_detail_anonymous(self, db, user):
|
|
course = DiscGolfCourse.objects.create(title="Maple Hill")
|
|
self._make_scrobble(user, course)
|
|
client = Client()
|
|
response = client.get(
|
|
reverse("discgolf:course_detail", kwargs={"slug": course.uuid})
|
|
)
|
|
assert response.status_code == 200
|
|
|
|
def test_course_detail_shows_course(self, db, user):
|
|
course = DiscGolfCourse.objects.create(
|
|
title="Maple Hill", layout_name="Mountains"
|
|
)
|
|
self._make_scrobble(user, course)
|
|
client = Client()
|
|
response = client.get(
|
|
reverse("discgolf:course_detail", kwargs={"slug": course.uuid})
|
|
)
|
|
assert response.status_code == 200
|
|
assert "Maple Hill" in response.content.decode()
|