From 7ae41298871aba22d2e5dab063e3390578a91b8d Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sun, 17 Jan 2021 18:54:45 +0100 Subject: [PATCH] test indoor --- rowers/tests/test_races.py | 230 ++++++++++++++++++++++++++++++++++++- 1 file changed, 229 insertions(+), 1 deletion(-) diff --git a/rowers/tests/test_races.py b/rowers/tests/test_races.py index 09651dfa..5ff07be1 100644 --- a/rowers/tests/test_races.py +++ b/rowers/tests/test_races.py @@ -101,7 +101,8 @@ class ChallengesTest(TestCase): def test_distance(self): lat_lon = (52.214229145558484, 6.890036546847821) distance = howfaris(lat_lon,self.ThyroBaantje) - self.assertEqual(distance,3.156402768718697) + distance = int(100*distance) + self.assertEqual(distance,315) def test_getnearestraces(self): lat_lon = (52.214229145558484, 6.890036546847821) @@ -420,3 +421,230 @@ class ChallengesTest(TestCase): status_code=302,target_status_code=200) self.assertEqual(response.status_code, 200) + + +@override_settings(TESTING=True) +class IndoorChallengesTest(TestCase): + def setUp(self): + self.u = UserFactory() + + self.r = Rower.objects.create(user=self.u, + birthdate=datetime.datetime.now()-datetime.timedelta(days=25*365), + gdproptin=True,surveydone=True, + gdproptindate=timezone.now(), + rowerplan='coach') + + self.c = Client() + self.user_workouts = WorkoutFactory.create_batch(5, user=self.r) + self.factory = RequestFactory() + self.password = faker.word() + self.u.set_password(self.password) + self.u.save() + + id = save_scoring('Standard Scoring',self.u,'rowers/tests/testdata/coursestandard.csv',id=0) + self.Scoring = StandardCollection.objects.get(id=id) + + + result = get_random_file(filename='rowers/tests/testdata/2019-01-13_session.csv', + name='sprintervals') + + self.werg = WorkoutFactory(user=self.r, + csvfilename=result['filename'], + starttime=result['starttime'], + startdatetime=result['startdatetime'], + duration=result['duration'], + distance=result['totaldist'], + workouttype = 'water', + ) + + self.werg.startdatetime = nu + self.werg.date = nu.date() + self.werg.save() + + startdate = arrow.get(datetime.datetime.now()-datetime.timedelta(days=1)).datetime + start_time = datetime.time() + enddate = startdate+datetime.timedelta(days=5) + end_time = start_time + evaluation_closure = startdate+datetime.timedelta(days=6) + registration_closure = evaluation_closure + contact_phone = '06342323' + contact_email = 'roosendaalsander@gmail.com' + + timezone_str = 'UTC' + + self.IndoorSpeedOrder = VirtualRace( + name='Thyro Speed Order', + startdate=startdate, + preferreddate = startdate, + start_time = start_time, + enddate=enddate, + end_time=end_time, + comment='', + sessiontype = 'indoorrace', + timezone=timezone_str, + evaluation_closure=evaluation_closure, + registration_closure=registration_closure, + contact_phone=contact_phone, + contact_email=contact_email, + country = 'Netherlands', + manager=self.u, + sessionvalue=result['totaldist'], + sessionunit='m', + sessionmode='distance', + ) + self.IndoorSpeedOrder.save() + + + def tearDown(self): + for workout in self.user_workouts: + try: + os.remove(workout.csvfilename) + except (IOError, FileNotFoundError,OSError): + pass + + + def test_virtualevents_view(self): + 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) + + form_data = { + 'country':'All', + 'regattatype':'upcoming', + } + + # make various selections + form = VirtualRaceSelectForm(form_data) + self.assertTrue(form.is_valid()) + + response = self.c.post(url) + self.assertEqual(response.status_code,200) + + form_data = { + 'country':'All', + 'regattatype':'previous', + } + + form = VirtualRaceSelectForm(form_data) + self.assertTrue(form.is_valid()) + + response = self.c.post(url) + self.assertEqual(response.status_code,200) + + form_data = { + 'country':'All', + 'regattatype':'ongoing', + } + + form = VirtualRaceSelectForm(form_data) + self.assertTrue(form.is_valid()) + + response = self.c.post(url) + self.assertEqual(response.status_code,200) + + form_data = { + 'country':'All', + 'regattatype':'my', + } + + form = VirtualRaceSelectForm(form_data) + self.assertTrue(form.is_valid()) + + 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.IndoorSpeedOrder + # look at event + url = reverse('virtualevent_view',kwargs={'id':race.id}) + response = self.c.get(url) + self.assertEqual(response.status_code,200) + + if self.r.birthdate: + age = calculate_age(self.r.birthdate) + else: + age = 25 + + # register + url = reverse('indoorvirtualevent_register_view',kwargs={'id':race.id}) + response = self.c.get(url) + self.assertEqual(response.status_code,200) + + + form_data = { + 'teamname': 'ApeTeam', + 'boatclass': 'rower', + 'weightcategory': 'hwt', + 'adaptiveclass': 'None', + 'age': age, + 'mix': False, + 'acceptsocialmedia': True, + } + form = IndoorVirtualRaceResultForm(form_data) + + 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('indoorvirtualevent_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 = IndoorVirtualRaceResult.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('indoorvirtualevent_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 = IndoorVirtualRaceResult.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.werg.id}) + response = self.c.get(url) + self.assertEqual(response.status_code, 200) + + form_data = { + 'workouts':[self.werg.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)