new migrations in apps.epic app; new models, urls, views handle the founder of a New Game inviting a friend via email to a game gatekeeper; ea. may drop coin in any of up to 6 avail. slots; FTs & ITs passing
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
from datetime import timedelta
|
||||
from django.db.models import Q
|
||||
from django.test import TestCase
|
||||
from django.urls import reverse
|
||||
|
||||
from apps.lyric.models import Token, User
|
||||
from apps.epic.models import Room, GateSlot, debit_token
|
||||
from apps.epic.models import GateSlot, Room, RoomInvite, debit_token
|
||||
|
||||
|
||||
class RoomCreationTest(TestCase):
|
||||
@@ -62,3 +63,31 @@ class CoinTokenInUseTest(TestCase):
|
||||
html = self.coin.tooltip_room_html()
|
||||
self.assertIn(f'href="{room_url}"', html)
|
||||
self.assertIn(self.room.name, html)
|
||||
|
||||
|
||||
class RoomInviteTest(TestCase):
|
||||
def setUp(self):
|
||||
self.founder = User.objects.create(email="founder@example.com")
|
||||
self.room = Room.objects.create(name="Dragon's Den", owner=self.founder)
|
||||
|
||||
def test_founder_can_invite_by_email(self):
|
||||
invite = RoomInvite.objects.create(
|
||||
room=self.room,
|
||||
inviter=self.founder,
|
||||
invitee_email="friend@example.com",
|
||||
)
|
||||
self.assertEqual(invite.status, RoomInvite.PENDING)
|
||||
|
||||
def test_invited_room_appears_in_my_games_queryset(self):
|
||||
friend = User.objects.create(email="friend@example.com")
|
||||
RoomInvite.objects.create(
|
||||
room=self.room,
|
||||
inviter=self.founder,
|
||||
invitee_email=friend.email,
|
||||
)
|
||||
rooms = Room.objects.filter(
|
||||
Q(owner=friend) |
|
||||
Q(gate_slots__gamer=friend) |
|
||||
Q(invites__invitee_email=friend.email, invites__status=RoomInvite.PENDING)
|
||||
).distinct()
|
||||
self.assertIn(self.room, rooms)
|
||||
|
||||
Reference in New Issue
Block a user