diff --git a/events/templates/events/schedule.html b/events/templates/events/schedule.html
index 295dc52..bb542e0 100644
--- a/events/templates/events/schedule.html
+++ b/events/templates/events/schedule.html
@@ -8,7 +8,7 @@
{{ event.start|date:"l, F j, Y g:i A" }}
{{ event.venue.name }}
Edit Event Details
- Edit Lineup
+ Edit Lineup
{% endfor %}
diff --git a/events/tests.py b/events/tests.py
index 4ed33df..4128e1f 100644
--- a/events/tests.py
+++ b/events/tests.py
@@ -1,112 +1,80 @@
-from django.test import TestCase
-from events.models import Player, Event, Availability, Team, Positioning
-import datetime
-import pytz
-# Create your tests here.
+from django.test import TestCase, Client
+from django.test.utils import setup_test_environment
+from django.urls import reverse
+from .models import Event
+from datetime import datetime
+FIXTURES = ['blaseball']
-class BenchcoachTestCase(TestCase):
- def setUp(self):
- for first_name, last_name, jersey_number in [
- ("Rush", "Valenzuela", 1),
- ("Baby", "Triumphant", 2)
- ]:
- Player.objects.create(first_name=first_name, last_name=last_name, jersey_number=jersey_number)
+class TestEventModel(TestCase):
+ fixtures = FIXTURES
- for name in ["Firefighters", "Garages"]:
- Team.objects.create(name=name)
+ def test_query_event(self):
+ """
+ Return the desired event
+ """
+ event = Event.objects.get(id=1)
+ self.assertEqual("Chicago Firefighters", event.away_team.name)
+ self.assertEqual("Dallas Steaks", event.home_team.name)
+ self.assertEqual('George Fourman Stadium', event.venue.name)
+ self.assertEqual(datetime(
+ year=2020,
+ month=8,
+ day=24,
+ hour=16,
+ minute=0,
+ second=1), event.start)
- for start, home_team_id, away_team_id in [
- (datetime.datetime(2020, 1, 2, 12, 0), 1, 2), # id = 1
- (datetime.datetime(2020, 1, 3, 12, 0), 2, 1), # id = 2
- (datetime.datetime(2020, 1, 4, 12, 0), 2, 1) # id = 3
- ]:
- Event.objects.create(start=start, home_team_id=home_team_id, away_team_id=away_team_id)
+class TestEventViews(TestCase):
+ fixtures = FIXTURES
- for event_id in [
- 1
- ]:
- for player_id, available in [
- (1,"Yes"),
- (2,"No")
- ]:
- Availability.objects.create(event_id=event_id, player_id=player_id, available=available)
+ def test_event_list(self):
+ response = self.client.get(reverse('schedule'))
+ self.assertEqual(200, response.status_code)
- for event_id in [
- 1
- ]:
- for player_id, position in [
- (1, "C"),
- (2, "1B")
- ]:
- Positioning.objects.create(event_id=event_id, player_id=player_id, position=position)
+ def test_event_edit(self):
+ response = self.client.get(reverse('edit event', args=[2]))
+ self.assertEqual(200, response.status_code)
- for event_id in [
- 2
- ]:
- for player_id, available in [
- (1,"Yes"),
- (2,"Yes")
- ]:
- Availability.objects.create(event_id=event_id, player_id=player_id, available=available)
+ # create new event
+ new_event_data = {
+ 'home_team': 23,
+ 'away_team': 24,
+ 'start':datetime(
+ year=2021,
+ month=1,
+ day=1,
+ hour=9,
+ minute=0,
+ second=0),
+ 'venue':19
+ }
- for event_id in [
- 3
- ]:
- for player_id, available in [
- (1,"No"),
- (2,"No")
- ]:
- Availability.objects.create(event_id=event_id, player_id=player_id, available=available)
- pass
+ response = self.client.post(reverse('edit event', args=[0]), data=new_event_data)
+ self.assertEqual(201, response.status_code)
+ new_event = Event.objects.get(id=response.context['id'])
+ self.assertEqual(new_event_data['home_team'], new_event.home_team.id)
+ self.assertEqual(new_event_data['away_team'], new_event.away_team_id)
+ self.assertEqual(new_event_data['start'], new_event.start)
-
- def test_player(self):
- """Test that player works"""
- player_1 = Player.objects.get(first_name="Rush")
- player_2 = Player.objects.get(first_name="Baby")
- self.assertEqual(str(player_1), f"Valenzuela, Rush")
- self.assertEqual(str(player_2), f"Triumphant, Baby")
- pass
-
- def test_event(self):
- event = Event.objects.get(pk=1)
- self.assertEqual(event.start.year, 2020)
- self.assertEqual(event.start.month, 1)
- self.assertEqual(event.start.day, 2)
- self.assertEqual(event.start.hour, 12)
- self.assertEqual(event.start.minute, 0)
- self.assertEqual(event.home_team.name, "Firefighters")
- self.assertEqual(event.away_team.name, "Garages")
-
- def test_availability(self):
- availability_1 = Availability.objects.get(event_id=1, player_id=1)
- availability_2 = Availability.objects.get(event_id=1, player_id=2)
-
- self.assertEqual(availability_1.available, "Yes")
- self.assertEqual(availability_2.available, "No")
- pass
-
- def test_positioning(self):
- positioning_1 = Positioning.objects.get(event_id=1, player_id=1)
- positioning_2 = Positioning.objects.get(event_id=1, player_id=2)
- # positing_1
- pass
-
- def test_combine_info(self):
- event = Event.objects.get(pk=1)
- event_id = 1
- player_query = Player.objects.all()
- positioning_query = Positioning.objects.filter(event=event).select_related('player')
- availability_query = Availability.objects.filter(event=event).select_related('player')
- player_event_info = []
-
- for player in player_query:
- player_event_info.append(
- {
- "player":player,
- "positioning":positioning_query.get(player_id=player.id),
- "availability":availability_query.get(player_id=player.id)
+ # modify event
+ modified_event_data = {
+ 'home_team': 23,
+ 'away_team': 24,
+ 'start':datetime(
+ year=2021,
+ month=1,
+ day=1,
+ hour=9,
+ minute=0,
+ second=0),
+ 'venue':19
}
- )
+ response = self.client.post(reverse('edit event', args=[1]), data=modified_event_data)
+ self.assertEqual(200, response.status_code)
+ self.assertEqual(1, response.context['id'])
+ modified_event = Event.objects.get(id=response.context['id'])
- pass
+ self.assertEqual(modified_event_data['home_team'], modified_event.home_team.id)
+ self.assertEqual(modified_event_data['away_team'], modified_event.away_team.id)
+ self.assertEqual(modified_event_data['start'], modified_event.start)
+ self.assertEqual(modified_event_data['venue'], modified_event.venue.id)
diff --git a/events/views.py b/events/views.py
index 092ad15..db01cba 100644
--- a/events/views.py
+++ b/events/views.py
@@ -1,4 +1,6 @@
from django.shortcuts import render, redirect, get_object_or_404
+from django.http import HttpResponse
+from django.urls import reverse
from .models import Event
from .forms import EventForm
from django.http import HttpResponse
@@ -24,8 +26,11 @@ def edit(request, id=0):
# process the data in form.cleaned_data as required
# ...
# redirect to a new URL:
+ if id == 0: id = None
new_event, did_create = Event.objects.update_or_create(pk=id, defaults=form.cleaned_data)
- return render(request, 'success.html', {'call_back':'schedule'})
+ return render(request, 'success.html', {'call_back':reverse('schedule'),'id':new_event.id}, status=201 if did_create else 200)
+ else:
+ return HttpResponse(status=400)
# if a GET (or any other method) we'll create a blank form
else:
diff --git a/lineups/templates/lineups/lineup.html b/lineups/templates/lineups/lineup.html
index fad6478..1be4eca 100644
--- a/lineups/templates/lineups/lineup.html
+++ b/lineups/templates/lineups/lineup.html
@@ -9,7 +9,7 @@