consolidated objects into one benchcoach app

created benchcoachproject app to contain all the settings and stuff
some other changes that got grouped with this commit is the adding the ApiObject to the TeamSnap object model
This commit is contained in:
2021-12-21 17:14:52 -06:00
parent e9f91126e5
commit 95697ef4fe
174 changed files with 5351 additions and 16551 deletions

281
benchcoach/tests.py Normal file
View File

@@ -0,0 +1,281 @@
from django.test import TestCase
from .models import Event, Player, Team, Venue, Positioning
from .forms import PositioningFormSet
from datetime import datetime
from django.urls import reverse
FIXTURES = ["blaseball"]
class TestEventModel(TestCase):
fixtures = FIXTURES
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,
)
class TestEventViews(TestCase):
fixtures = FIXTURES
def test_event_list(self):
response = self.client.get(reverse("schedule"))
self.assertEqual(200, response.status_code)
def test_event_edit(self):
response = self.client.get(reverse("edit event", args=[2]))
self.assertEqual(200, response.status_code)
# 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,
}
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)
# 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"])
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)
class TestVenueViews(TestCase):
fixtures = ["blaseball"]
def test_positioning_list(self):
response = self.client.get(reverse("edit lineup", args=[1]))
self.assertEqual(response.status_code, 200)
def test_positioning_formset(self):
event = 1
sample_data = [
# first player positioning
(1, Player.objects.get(id=1).id, "P"),
(2, Player.objects.get(id=2).id, "C"),
(3, Player.objects.get(id=3).id, "1B"),
]
data = {}
for i, (order, player, position) in enumerate(sample_data):
data[f"form-{i}-order"] = order
data[f"form-{i}-player"] = player
data[f"form-{i}-position"] = position
management = {
"form-INITIAL_FORMS": "0",
"form-TOTAL_FORMS": len(sample_data),
"form-MAX_NUM_FORMS": "",
}
formset = PositioningFormSet({**management, **data})
self.assertTrue(formset.is_valid())
for form in formset:
self.assertTrue(form.is_valid())
response = self.client.post(
reverse("edit lineup", args=[event]), {**management, **data}
)
self.assertEqual(response.status_code, 200)
for d in sample_data:
with self.subTest(d):
p = Positioning.objects.get(player_id=d[1], event_id=event)
self.assertEqual(d[0], p.order)
self.assertEqual(d[2], p.position)
pass
class TestPlayerModel(TestCase):
fixtures = FIXTURES
def test_query_player(self):
"""
Return the desired player
"""
player = Player.objects.get(id=1)
self.assertEqual(player.first_name, "Edric")
self.assertEqual(player.last_name, "Tosser")
self.assertEqual(player.jersey_number, 1)
self.assertEqual(player.team.name, "Chicago Firefighters")
class TestPlayerViews(TestCase):
fixtures = FIXTURES
def test_player_list(self):
response = self.client.get(reverse("players list"))
self.assertEqual(response.status_code, 200)
def test_player_edit(self):
response = self.client.get(reverse("edit player", args=[1]))
self.assertEqual(response.status_code, 200)
# create new player
new_player_data = {
"first_name": "A new player first name",
"last_name": "A new player last name",
"jersey_number": 99,
"team": 1,
}
response = self.client.post(
reverse("edit player", args=[0]), data=new_player_data
)
self.assertEqual(201, response.status_code)
new_player = Player.objects.get(id=response.context["id"])
self.assertEqual(new_player_data["first_name"], new_player.first_name)
self.assertEqual(new_player_data["last_name"], new_player.last_name)
# modify player
modified_player_data = {
"first_name": "A changed player first name",
"last_name": "A changed player last name",
"jersey_number": 99,
"team": 1,
}
response = self.client.post(
reverse("edit player", args=[1]), data=modified_player_data
)
self.assertEqual(200, response.status_code)
self.assertEqual(1, response.context["id"])
modified_player = Player.objects.get(id=response.context["id"])
self.assertEqual(modified_player_data["first_name"], modified_player.first_name)
self.assertEqual(modified_player_data["last_name"], modified_player.last_name)
class TestTeamModel(TestCase):
fixtures = ["blaseball"]
def test_query_team(self):
"""
Return the desired team
"""
team = Team.objects.get(id=1)
self.assertEqual(team.name, "Chicago Firefighters")
class TestTeamViews(TestCase):
fixtures = ["blaseball"]
def test_team_list(self):
response = self.client.get(reverse("teams list"))
self.assertEqual(response.status_code, 200)
self.assertIn(
{"id": 1, "title": "Chicago Firefighters"}, response.context["items"]
)
self.assertIn({"id": 2, "title": "Boston Flowers"}, response.context["items"])
self.assertIn({"id": 24, "title": "Baltimore Crabs"}, response.context["items"])
def test_team_edit(self):
response = self.client.get(reverse("edit team", args=[1]))
self.assertEqual(response.status_code, 200)
# create new team
response = self.client.post(
reverse("edit team", args=[0]), data={"name": "A new team"}
)
self.assertEqual(201, response.status_code)
new_team = Team.objects.get(id=response.context["id"])
self.assertEqual(
"A new team",
new_team.name,
)
# modify team
response = self.client.post(
reverse("edit team", args=[1]), data={"name": "A different team name"}
)
self.assertEqual(200, response.status_code)
self.assertEqual(1, response.context["id"])
modified_team = Team.objects.get(id=response.context["id"])
self.assertEqual("A different team name", modified_team.name)
class TestVenueModel(TestCase):
fixtures = ["blaseball"]
def test_query_venue(self):
"""
Return the desired venue
"""
venue = Venue.objects.get(id=1)
self.assertEqual(venue.name, "Chesapeake Racetrack and Ballpark")
class TestVenueViews(TestCase):
fixtures = ["blaseball"]
def test_venue_list(self):
response = self.client.get(reverse("venues list"))
self.assertEqual(response.status_code, 200)
self.assertIn(
{"id": 1, "title": "Chesapeake Racetrack and Ballpark"},
response.context["items"],
)
self.assertIn(
{"id": 2, "title": "Tokyo Fitness Center"}, response.context["items"]
)
self.assertIn(
{"id": 25, "title": "ILB Historical Preservation Site"},
response.context["items"],
)
def test_venue_edit(self):
response = self.client.get(reverse("edit venue", args=[1]))
self.assertEqual(response.status_code, 200)
# create new venue
response = self.client.post(
reverse("edit venue", args=[0]), data={"name": "A new venue"}
)
self.assertEqual(201, response.status_code)
new_venue = Venue.objects.get(id=response.context["id"])
self.assertEqual(
"A new venue",
new_venue.name,
)
# modify venue
response = self.client.post(
reverse("edit venue", args=[1]), data={"name": "A different venue name"}
)
self.assertEqual(200, response.status_code)
self.assertEqual(1, response.context["id"])
modified_venue = Venue.objects.get(id=response.context["id"])
self.assertEqual("A different venue name", modified_venue.name)