From 9bc16353b7f26344070c64d9f98a3cd9ca38b6da Mon Sep 17 00:00:00 2001 From: Tony Date: Fri, 12 Nov 2021 14:09:21 -0600 Subject: [PATCH] added and verified tests --- events/tests.py | 65 ++++++++++++++++++++++++++++++++++++++++++------ lineups/tests.py | 44 ++++++++++++++++++++++++++------ players/tests.py | 26 ++++++++++++++----- teams/tests.py | 38 ++++++++++++++++++++++++++++ venues/tests.py | 9 +++---- 5 files changed, 155 insertions(+), 27 deletions(-) diff --git a/events/tests.py b/events/tests.py index d53b3b8..7294e95 100644 --- a/events/tests.py +++ b/events/tests.py @@ -2,8 +2,8 @@ from django.test import TestCase, Client from django.test.utils import setup_test_environment from django.urls import reverse from .models import Event - -FIXTURES = ['sample_events.yaml', 'sample_teams.yaml'] +from datetime import datetime +FIXTURES = ['blaseball'] class TestEventModel(TestCase): fixtures = FIXTURES @@ -13,19 +13,68 @@ class TestEventModel(TestCase): Return the desired event """ event = Event.objects.get(id=1) - # self.assertEqual(event.first_name, "Edric") - # self.assertEqual(event.last_name, "Tosser") - # self.assertEqual(event.jersey_number, 1) - # self.assertEqual(event.team.name, "Chicago Firefighters") + self.assertEqual("Chicago Firefighters", event.away_event.name) + self.assertEqual("Dallas Steaks", event.home_event.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(response.status_code, 200) + self.assertEqual(200, response.status_code) def test_event_edit(self): response = self.client.get(reverse('edit event', args=[2])) - self.assertEqual(response.status_code, 200) + 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) diff --git a/lineups/tests.py b/lineups/tests.py index f244a39..55f395e 100644 --- a/lineups/tests.py +++ b/lineups/tests.py @@ -13,10 +13,40 @@ class TestVenueViews(TestCase): self.assertEqual(response.status_code, 200) def test_positioning_formset(self): - formset = PositioningFormSet({ - 'form-0-id':1, - 'form-0-order':0, - 'form-0-player':Player.objects.get(id=1), - 'form-0-position':'P' - }) - self.assertTrue(formset.is_valid()) \ No newline at end of file + 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 \ No newline at end of file diff --git a/players/tests.py b/players/tests.py index 1aaac93..dc24f5d 100644 --- a/players/tests.py +++ b/players/tests.py @@ -1,9 +1,8 @@ from django.test import TestCase, Client -from django.test.utils import setup_test_environment from django.urls import reverse from .models import Player -FIXTURES = ['sample_players.yaml', 'sample_teams.yaml'] +FIXTURES = ['blaseball'] class TestPlayerModel(TestCase): fixtures = FIXTURES @@ -30,15 +29,30 @@ class TestPlayerViews(TestCase): self.assertEqual(response.status_code, 200) # create new player - response = self.client.post(reverse('edit player', args=[0]), data={'name': "A 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('A new player', new_player.name) + self.assertEqual(new_player_data['first_name'], new_player.first_name) + self.assertEqual(new_player_data['last_name'], new_player.last_name) # modify player - response = self.client.post(reverse('edit player', args=[1]), data={'name': "A different player name"}) + 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('A different player name', modified_player.name) + self.assertEqual(modified_player_data['first_name'], modified_player.first_name) + self.assertEqual(modified_player_data['last_name'], modified_player.last_name) diff --git a/teams/tests.py b/teams/tests.py index 7ce503c..0e52a25 100644 --- a/teams/tests.py +++ b/teams/tests.py @@ -1,3 +1,41 @@ +from django.urls import reverse from django.test import TestCase +from .models import Team # Create your tests here. +class TestTeamModel(TestCase): + fixtures = ['blaseball'] + + def test_query_team(self): + """ + Return the desired team + """ + team = Team.objects.get(id=1) + self.assertEqual(team.name, "Chesapeake Racetrack and Ballpark") + +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((1, 'Chesapeake Racetrack and Ballpark'), response.context['items']) + self.assertIn((2, 'Tokyo Fitness Center'), response.context['items']) + self.assertIn((25, 'ILB Historical Preservation Site'), 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) \ No newline at end of file diff --git a/venues/tests.py b/venues/tests.py index 8aa4646..151c3c9 100644 --- a/venues/tests.py +++ b/venues/tests.py @@ -1,12 +1,9 @@ -from django.test import TestCase, Client -from django.test.utils import setup_test_environment +from django.test import TestCase from django.urls import reverse from .models import Venue -FIXTURES = ['sample_venues.yaml'] - class TestVenueModel(TestCase): - fixtures = FIXTURES + fixtures = ['blaseball'] def test_query_venue(self): """ @@ -16,7 +13,7 @@ class TestVenueModel(TestCase): self.assertEqual(venue.name, "Chesapeake Racetrack and Ballpark") class TestVenueViews(TestCase): - fixtures = FIXTURES + fixtures = ['blaseball'] def test_venue_list(self): response = self.client.get(reverse('venues list'))