From 88bea9086faa00a93be57d81397584ba72f825ba Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sun, 17 Jan 2021 17:20:55 +0100 Subject: [PATCH] testing otw race register, submit --- rowers/plannedsessions.py | 3 +- rowers/tests/mocks.py | 10 ++- rowers/tests/test_races.py | 116 +++++++++++++++++++++++++++++++- rowers/tests/testdata/thyro.kml | 6 +- rowers/views/racesviews.py | 4 ++ 5 files changed, 131 insertions(+), 8 deletions(-) diff --git a/rowers/plannedsessions.py b/rowers/plannedsessions.py index bc3b2b9e..3ea7819a 100644 --- a/rowers/plannedsessions.py +++ b/rowers/plannedsessions.py @@ -1464,7 +1464,6 @@ def default_class(r,w,race): sex='male' if w is not None: - print('noot') boatclass = w.workouttype boattype = w.boattype @@ -1475,7 +1474,7 @@ def default_class(r,w,race): boatclass = 'water' else: boatclass = 'rower' - print(boatclass) + boattype = '1x' adaptiveclass = 'None' weightclass = 'hwt' diff --git a/rowers/tests/mocks.py b/rowers/tests/mocks.py index 871de033..800184fa 100644 --- a/rowers/tests/mocks.py +++ b/rowers/tests/mocks.py @@ -74,7 +74,7 @@ def mocked_grpc(*args, **kwargs): class Result: def __init__(*args,**kwargs): self.result = 1 - + class calculator_pb2_grpc: def PowerStub(*args,**kwargs): def __init__(*args,**kwargs): @@ -114,11 +114,17 @@ def mocked_sqlalchemy(*args, **kwargs): def raw_connection(self): return True + class QueryResult: + def fetchall(self): + return [] + class MockConnection: def begin(self): return True - def execute(self): + def execute(self,query): + if 'polygon' in query: + return QueryResult() return True def execute(self): diff --git a/rowers/tests/test_races.py b/rowers/tests/test_races.py index 33b04e34..09651dfa 100644 --- a/rowers/tests/test_races.py +++ b/rowers/tests/test_races.py @@ -11,7 +11,9 @@ from rowers.utils import allmonths,allsundays import rowers.plannedsessions as plannedsessions import rowers.courses as courses +import rowers.tasks as tasks from rowers.views.racesviews import * +from rowers.utils import calculate_age @override_settings(TESTING=True) class ChallengesTest(TestCase): @@ -19,7 +21,7 @@ class ChallengesTest(TestCase): self.u = UserFactory() self.r = Rower.objects.create(user=self.u, - birthdate=faker.profile()['birthdate'], + birthdate=datetime.datetime.now()-datetime.timedelta(days=25*365), gdproptin=True,surveydone=True, gdproptindate=timezone.now(), rowerplan='coach') @@ -52,6 +54,10 @@ class ChallengesTest(TestCase): workouttype = 'water', ) + self.wthyro.startdatetime = nu + self.wthyro.date = nu.date() + self.wthyro.save() + startdate = arrow.get(datetime.datetime.now()-datetime.timedelta(days=1)).datetime start_time = datetime.time() enddate = startdate+datetime.timedelta(days=5) @@ -259,6 +265,7 @@ class ChallengesTest(TestCase): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) + # check virtual events url = reverse('virtualevents_view') response = self.c.get(url) self.assertEqual(response.status_code,200) @@ -268,6 +275,7 @@ class ChallengesTest(TestCase): 'regattatype':'upcoming', } + # make various selections form = VirtualRaceSelectForm(form_data) self.assertTrue(form.is_valid()) @@ -306,3 +314,109 @@ class ChallengesTest(TestCase): response = self.c.post(url) self.assertEqual(response.status_code,200) + + @patch('rowers.views.racesviews.myqueue') + def test_virtualevent_view(self,mocked_myqueue): + login = self.c.login(username=self.u.username, password=self.password) + self.assertTrue(login) + + race = self.SpeedOrder + # look at event + url = reverse('virtualevent_view',kwargs={'id':race.id}) + response = self.c.get(url) + self.assertEqual(response.status_code,200) + + ( + hasinitial, + boattype, + boatclass, + adaptiveclass, + weightclass, + sex, + referencespeed, + initialcategory + ) = plannedsessions.default_class(self.r,None,race) + self.assertTrue(hasinitial) + + if self.r.birthdate: + age = calculate_age(self.r.birthdate) + else: + age = 25 + + # register + url = reverse('virtualevent_register_view',kwargs={'id':race.id}) + response = self.c.get(url) + self.assertEqual(response.status_code,200) + + categories = CourseStandard.objects.filter(standardcollection=race.coursestandards).order_by("name") + + form_data = { + 'teamname': 'ApeTeam', + 'boattype': boattype, + 'boatclass': boatclass, + 'weightcategory': weightclass, + 'adaptiveclass': adaptiveclass, + 'age': age, + 'mix': False, + 'acceptsocialmedia': True, + 'entrycategory':initialcategory.id, + } + form = VirtualRaceResultForm(form_data,categories=categories) + self.assertTrue(form.is_valid()) + + + response = self.c.post(url,form_data,follow=True) + expected_url = reverse('virtualevent_view',kwargs={'id':race.id}) + self.assertRedirects(response, expected_url=expected_url, + status_code=302,target_status_code=200) + + self.assertEqual(response.status_code, 200) + + # toggle email + url = reverse('virtualevent_toggle_email_view',kwargs={'id':race.id}) + response = self.c.get(url,follow=True) + expected_url = reverse('virtualevent_view',kwargs={'id':race.id}) + self.assertRedirects(response, expected_url=expected_url, + status_code=302,target_status_code=200) + self.assertEqual(response.status_code,200) + + records = VirtualRaceResult.objects.filter(userid=self.u.id) + self.assertEqual(len(records),1) + + record = records[0] + + # withdraw + url = reverse('virtualevent_withdrawresult_view',kwargs={'id':race.id,'recordid':record.id}) + response = self.c.get(url) + self.assertEqual(response.status_code,200) + + + # register again + url = reverse('virtualevent_register_view',kwargs={'id':race.id}) + response = self.c.post(url,form_data,follow=True) + expected_url = reverse('virtualevent_view',kwargs={'id':race.id}) + self.assertRedirects(response, expected_url=expected_url, + status_code=302,target_status_code=200) + + self.assertEqual(response.status_code, 200) + + records = VirtualRaceResult.objects.filter(userid=self.u.id) + self.assertEqual(len(records),1) + + record = records[0] + + # submit workout + url = reverse('virtualevent_submit_result_view',kwargs={'id':race.id,'workoutid':self.wthyro.id}) + response = self.c.get(url) + self.assertEqual(response.status_code, 200) + + form_data = { + 'workouts':[self.wthyro.id], + 'record':record.id, + } + + response = self.c.post(url,form_data,follow=True) + self.assertRedirects(response, expected_url=expected_url, + status_code=302,target_status_code=200) + + self.assertEqual(response.status_code, 200) diff --git a/rowers/tests/testdata/thyro.kml b/rowers/tests/testdata/thyro.kml index ddb176b1..dee2c531 100644 --- a/rowers/tests/testdata/thyro.kml +++ b/rowers/tests/testdata/thyro.kml @@ -5,7 +5,7 @@ Courses - Thyro Oefenbaantje + - Thyro Oefenbaantje 1 Start @@ -13,7 +13,7 @@ 1 - 6.848141106797385,52.22397960128134,0 6.847604734558461,52.22366336501974,0 6.84775082703156,52.22348501076475,0 6.848327567214691,52.22382735084554,0 6.848141106797385,52.22397960128134,0 6.848141106797385,52.22397960128134,0 + 6.848141106797385,52.22397960128134,0 6.847604734558461,52.22366336501974,0 6.84775082703156,52.22348501076475,0 6.848327567214691,52.22382735084554,0 6.848141106797385,52.22397960128134,0 6.848141106797385,52.22397960128134,0 6.848141106797385,52.22397960128134,0 @@ -24,7 +24,7 @@ 1 - 6.845667068529353,52.22505473275959,0 6.846124505574835,52.2253406573624,0 6.845843953045947,52.22551933313507,0 6.845303793589403,52.22520820682232,0 6.845667068529353,52.22505473275959,0 6.845667068529353,52.22505473275959,0 + 6.845667068529353,52.22505473275959,0 6.846124505574835,52.2253406573624,0 6.845843953045947,52.22551933313507,0 6.845303793589403,52.22520820682232,0 6.845667068529353,52.22505473275959,0 6.845667068529353,52.22505473275959,0 6.845667068529353,52.22505473275959,0 diff --git a/rowers/views/racesviews.py b/rowers/views/racesviews.py index da7eefb4..f5710e38 100644 --- a/rowers/views/racesviews.py +++ b/rowers/views/racesviews.py @@ -2080,6 +2080,7 @@ def virtualevent_register_view(request,id=0): if request.method == 'POST': # process form form = VirtualRaceResultForm(request.POST,categories=categories) + if form.is_valid(): cd = form.cleaned_data teamname = cd['teamname'] @@ -2159,6 +2160,7 @@ def virtualevent_register_view(request,id=0): record.save() + add_rower_race(r,race) # send email about opt out if not acceptsocialmedia: @@ -2217,6 +2219,8 @@ def virtualevent_register_view(request,id=0): "You have successfully registered for this race. Good luck!" ) + + url = reverse('virtualevent_view', kwargs = { 'id':race.id