Files
python-tdd/src/apps/epic/tests/integrated/test_views.py

77 lines
2.7 KiB
Python

from django.test import TestCase
from django.urls import reverse
from apps.lyric.models import User
from apps.epic.models import Room
class RoomCreationViewTest(TestCase):
def setUp(self):
self.user = User.objects.create(email="founder@test.io")
self.client.force_login(self.user)
def test_post_creates_room_and_redirects_to_gatekeeper(self):
response = self.client.post(
reverse("epic:create_room"),
data={"name": "Test Room"},
)
room = Room.objects.get(owner=self.user)
self.assertRedirects(
response, reverse(
"epic:gatekeeper",
args=[room.id],
)
)
def test_post_requires_login(self):
self.client.logout()
response = self.client.post(
reverse("epic:create_room"),
data={"name": "Test Room"},
)
def test_create_room_get_redirects_to_gameboard(self):
response = self.client.get(reverse("epic:create_room"))
self.assertRedirects(response, "/gameboard/")
class MyGamesContextTest(TestCase):
def setUp(self):
self.user = User.objects.create(email="gamer@example.com")
self.client.force_login(self.user)
def test_gameboard_context_includes_owned_rooms(self):
room = Room.objects.create(name="Durango", owner=self.user)
response = self.client.get("/gameboard/")
self.assertIn(room, response.context["my_games"])
def test_gameboard_context_includes_rooms_with_filled_slot(self):
other = User.objects.create(email="friend@example.com")
room = Room.objects.create(name="Their Room", owner=other)
slot = room.gate_slots.get(slot_number=2)
slot.gamer = self.user
slot.status = "FILLED"
slot.save()
response = self.client.get("/gameboard/")
self.assertIn(room, response.context["my_games"])
class GateStatusViewTest(TestCase):
def setUp(self):
self.owner = User.objects.create(email="founder@test.io")
self.client.force_login(self.owner)
self.room = Room.objects.create(name="Test Room", owner=self.owner)
def test_gate_status_returns_empty_when_open(self):
self.room.gate_status = Room.OPEN
self.room.save()
response = self.client.get(reverse("epic:gate_status", kwargs={"room_id": self.room.id}))
self.assertEqual(response.content, b"")
def test_gate_status_returns_partial_when_gathering(self):
response = self.client.get(
reverse("epic:gate_status", kwargs={"room_id": self.room.id})
)
self.assertEqual(response.status_code, 200)
self.assertContains(response, "gate-modal")