• diff --git a/rowers/templates/rower_exportsettings.html b/rowers/templates/rower_exportsettings.html index 6cabf41f..d817cf9b 100644 --- a/rowers/templates/rower_exportsettings.html +++ b/rowers/templates/rower_exportsettings.html @@ -12,7 +12,7 @@ Concept2 Logbook, {% endif %} {% if rower.nktoken is not None and rower.nktoken != '' %} - NK LiNK, + NK Logbook, {% endif %} {% if rower.sporttrackstoken is not None and rower.sporttrackstoken != '' %} SportTracks, @@ -74,7 +74,7 @@ choice or to renew the authorization.

    connect with strava

    connect with Concept2

    -

    connect with NK LiNK

    +

    connect with NK Logbook

    connect with SportTracks

    connect with RunKeeper

    connect with Under Armour

    diff --git a/rowers/tests/test_races.py b/rowers/tests/test_races.py index c89fc888..e9a9c765 100644 --- a/rowers/tests/test_races.py +++ b/rowers/tests/test_races.py @@ -111,6 +111,17 @@ class ChallengesTest(TestCase): workouttype = 'water', ) + + result = get_random_file(filename='rowers/tests/testdata/thyro.csv') + self.wthyro3 = WorkoutFactory(user=self.r2, + csvfilename=result['filename'], + starttime=result['starttime'], + startdatetime=result['startdatetime'], + duration=result['duration'], + distance=result['totaldist'], + workouttype = 'water', + ) + self.wthyro2.startdatetime = arrow.get(nu).datetime self.wthyro2.date = nu.date() self.wthyro2.save() @@ -164,6 +175,40 @@ class ChallengesTest(TestCase): ) self.result.save() + self.FastestRace = VirtualRace( + name='Thyro 5K', + startdate=startdate, + preferreddate = startdate, + start_time = start_time, + enddate=enddate, + end_time=end_time, + sessionvalue=200, + comment='', + sessiontype = 'fastest_distance', + timezone=timezone_str, + evaluation_closure=evaluation_closure, + registration_closure=registration_closure, + contact_phone=contact_phone, + contact_email=contact_email, + manager=self.u, + ) + self.FastestRace.save() + + self.result = VirtualRaceResult( + userid = self.u2.id, + username = self.u2.username, + race = self.FastestRace, + distance = 300, + duration = datetime.time(0,1,20), + points = 75, + coursecompleted = True, + age = 28, + startsecond = 0, + endsecond = 120, + workoutid = self.wthyro3.id + ) + self.result.save() + def tearDown(self): for workout in self.user_workouts: @@ -182,12 +227,12 @@ class ChallengesTest(TestCase): lat_lon = (52.214229145558484, 6.890036546847821) races = VirtualRace.objects.all() traces = getnearestraces(lat_lon,races) - self.assertEqual(len(traces),1) + self.assertEqual(len(traces),2) lat_lon = (0, 0) races = VirtualRace.objects.all() traces = getnearestraces(lat_lon,races) - self.assertEqual(len(traces),1) + self.assertEqual(len(traces),2) def test_getnearestcourses(self): lat_lon = (52.214229145558484, 6.890036546847821) @@ -388,6 +433,72 @@ class ChallengesTest(TestCase): self.assertEqual(response.status_code, 200) + def test_fastestrace_view(self): + login = self.c.login(username=self.u.username, password=self.password) + self.assertTrue(login) + + race = self.FastestRace + + if self.r.birthdate: + age = calculate_age(self.r.birthdate) + else: + age = 25 + + # look at event + url = reverse('virtualevent_view',kwargs={'id':race.id}) + response = self.c.get(url) + self.assertEqual(response.status_code,200) + + # register + url = reverse('virtualevent_register_view',kwargs={'id':race.id}) + response = self.c.get(url) + self.assertEqual(response.status_code,200) + + + form_data = { + 'teamname': 'ApeTeam', + 'boatclass': 'water', + 'boattype': '1x', + 'weightcategory': 'hwt', + 'adaptiveclass': 'None', + 'age': age, + 'mix': False, + 'acceptsocialmedia': True, + } + form = VirtualRaceResultForm(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) + + # 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) + + records = IndoorVirtualRaceResult.objects.filter(userid=self.u.id) + self.assertEqual(len(records),1) + + record = records[0] + + + 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) + + def test_virtualevents_view(self): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -995,6 +1106,8 @@ class IndoorChallengesTest(TestCase): self.assertEqual(response.url,expected) + + @patch('rowers.views.racesviews.myqueue') def test_virtualevent_view(self,mocked_myqueue): login = self.c.login(username=self.u.username, password=self.password) diff --git a/rowers/tests/test_unit_tests.py b/rowers/tests/test_unit_tests.py index 11cf5a61..0008e970 100644 --- a/rowers/tests/test_unit_tests.py +++ b/rowers/tests/test_unit_tests.py @@ -296,6 +296,11 @@ class PlannedSessionTests(TestCase): micro2 = plannedsessions.get_todays_micro(self.plan,thedate=datetime.date.today()) self.assertEqual(micro1.id,micro2.id) + def test_get_session_ids(self): + ids = plannedsessions.get_my_session_ids(self.r) + pss = PlannedSession.objects.filter(rower__in=[self.r]) + self.assertEqual(len(ids),len(pss)) + class DataPrepTests(TestCase): def setUp(self): self.u = UserFactory() diff --git a/rowers/views/importviews.py b/rowers/views/importviews.py index e4735ffe..d6a9e3c1 100644 --- a/rowers/views/importviews.py +++ b/rowers/views/importviews.py @@ -393,7 +393,7 @@ def workout_sporttracks_upload_view(request,id=0): return HttpResponseRedirect(url) # pragma: no cover -# NK LiNK authorization +# NK Logbook authorization @login_required() def rower_nk_authorize(request): # pragma: no cover state = str(uuid4()) diff --git a/rowers/views/racesviews.py b/rowers/views/racesviews.py index 6c417ae7..147e6ebd 100644 --- a/rowers/views/racesviews.py +++ b/rowers/views/racesviews.py @@ -3281,7 +3281,6 @@ def virtualevent_submit_result_view(request,id=0,workoutid=0): if request.method == 'POST': w_form = WorkoutRaceSelectForm(workoutdata,entries,request.POST) - if w_form.is_valid(): selectedworkout = w_form.cleaned_data['workouts'] splitsecond = 0