From 03a4a67144e92743d76b12716bc8980e7774eeb0 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Wed, 13 Jan 2021 19:07:19 +0100 Subject: [PATCH] increased workoutviews coverage --- rowers/tests/test_aworkouts.py | 104 +++++++++++++++++++++++++++++++-- rowers/tests/test_emails.py | 7 +++ rowers/views/workoutviews.py | 77 ------------------------ 3 files changed, 105 insertions(+), 83 deletions(-) diff --git a/rowers/tests/test_aworkouts.py b/rowers/tests/test_aworkouts.py index 96bcabab..9adfa075 100644 --- a/rowers/tests/test_aworkouts.py +++ b/rowers/tests/test_aworkouts.py @@ -158,12 +158,20 @@ class WorkoutViewTest(TestCase): d1 = self.werg1.date-datetime.timedelta(days=2) d2 = self.werg2.date+datetime.timedelta(days=2) - date_form_data = { - 'startdate': d1.strftime('%Y-%m%d'), - 'enddate': d2.strftime('%Y-%m%d') + form_data = { + 'startdate': d1.strftime('%Y-%m-%d'), + 'enddate': d2.strftime('%Y-%m-%d'), + 'modality':'water', + 'waterboattype':['1x'], } - response = self.c.post(url,date_form_data) + form = DateRangeForm(form_data) + self.assertTrue(form.is_valid()) + + form = TrendFlexModalForm(form_data) + self.assertTrue(form.is_valid()) + + response = self.c.post(url,form_data) self.assertEqual(response.status_code,200) url = reverse('workouts_join_view') @@ -215,11 +223,34 @@ class WorkoutViewTest(TestCase): session.save() response = self.c.get('/') + + url = reverse('team_comparison_select') + response = self.c.get(url) + self.assertEqual(response.status_code,200) + + d1 = self.werg1.date-datetime.timedelta(days=2) + d2 = self.werg2.date+datetime.timedelta(days=2) + + form_data = { + 'startdate': d1.strftime('%Y-%m-%d'), + 'enddate': d2.strftime('%Y-%m-%d'), + 'modality':'water', + 'waterboattype':['1x'], + } + + form = DateRangeForm(form_data) + self.assertTrue(form.is_valid()) + + form = TrendFlexModalForm(form_data) + self.assertTrue(form.is_valid()) + + response = self.c.post(url,form_data) + self.assertEqual(response.status_code,200) + url = reverse('multi_compare_view',kwargs={ 'userid':self.u.id, 'id':encoder.encode_hex(self.werg1.id), }) - print(url) form_data = { 'xparam':'time', @@ -369,7 +400,9 @@ class WorkoutViewTest(TestCase): @patch('rowers.dataprep.create_engine') @patch('rowers.dataprep.getsmallrowdata_db') - def test_setpowerform(self, mocked_sqlalchemy, mocked_getsmallrowdata_db): + @patch('rowers.middleware.myqueue') + def test_setpowerform(self, mocked_sqlalchemy, mocked_getsmallrowdata_db, + mocked_myqueue): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) @@ -383,6 +416,17 @@ class WorkoutViewTest(TestCase): self.assertTrue(len(instrokemetrics)>0) + url = reverse('instroke_chart', + kwargs={ + 'id':encoder.encode_hex(self.winstroke.id), + 'metric':instrokemetrics[0], + }) + url2 = reverse(self.r.defaultlandingpage,kwargs={'id':encoder.encode_hex(self.winstroke.id)}) + response = self.c.get(url) + self.assertRedirects(response, + expected_url=url2, + status_code=302,target_status_code=200) + @patch('rowers.dataprep.create_engine') @patch('rowers.dataprep.getsmallrowdata_db') def test_setpowerform(self, mocked_sqlalchemy, mocked_getsmallrowdata_db): @@ -543,6 +587,22 @@ class WorkoutViewTest(TestCase): self.assertEqual(response.status_code,200) + def test_remove_power_view(self): + login = self.c.login(username=self.u.username, password=self.password) + self.assertTrue(login) + + url = reverse('remove_power_view',kwargs={'id':encoder.encode_hex(self.wwater.id)}) + url2 = reverse(self.r.defaultlandingpage, + kwargs={ + 'id':encoder.encode_hex(self.wwater.id) + } + ) + response = self.c.get(url) + self.assertRedirects(response, + expected_url=url2, + status_code=302, + target_status_code=200 + ) @patch('rowers.dataprep.create_engine') @patch('rowers.dataprep.getsmallrowdata_db') @@ -597,6 +657,38 @@ class WorkoutViewTest(TestCase): response = self.c.post(url,form_data) self.assertEqual(response.status_code,200) + @patch('rowers.dataprep.create_engine') + @patch('rowers.dataprep.getrowdata_db',side_effect=mocked_getrowdata_db) + @patch('rowers.dataprep.get_video_data',side_effect=mocked_videodata) + def test_video_selectworkout(self, mocked_sqlalchemy, mocked_getsmallrowdata_db, + mocked_videodata): + login = self.c.login(username=self.u.username, password=self.password) + self.assertTrue(login) + + url = reverse('video_selectworkout') + + response = self.c.get(url) + self.assertEqual(response.status_code,200) + + d1 = self.wwater.date-datetime.timedelta(days=24) + d2 = self.wwater.date+datetime.timedelta(days=24) + + + form_data = { + 'workout':'1', + 'startdate': d1.strftime("%Y-%m-%d"), + 'enddate': d2.strftime("%Y-%m-%d") + } + + url2 = reverse('workout_video_create_view',kwargs={'id':encoder.encode_hex(1)}) + + response = self.c.post(url,form_data) + self.assertRedirects(response, + expected_url=url2, + status_code=302, + target_status_code=200) + + @patch('rowers.dataprep.create_engine') @patch('rowers.dataprep.getsmallrowdata_db') diff --git a/rowers/tests/test_emails.py b/rowers/tests/test_emails.py index 7edbd7e1..f7f51363 100644 --- a/rowers/tests/test_emails.py +++ b/rowers/tests/test_emails.py @@ -43,6 +43,8 @@ workout run m.save() a2 = 'media/mailbox_attachments/colin3.csv' copy('rowers/tests/testdata/emails/colin.csv',a2) + a3 = 'media/mailbox_attachments/colin4.csv' + copy('rowers/tests/testdata/emails/colin.csv',a3) a = MessageAttachment(message=m,document=a2[6:]) a.save() @@ -76,6 +78,11 @@ workout run response = self.c.post(url,form_data,HTTP_HOST='127.0.0.1:4533') self.assertEqual(response.status_code,200) + form_data['file'] = 'media/mailbox_attachments/colin4.csv' + response = self.c.post(url,json.dumps(form_data),HTTP_HOST='127.0.0.1:4533', + content_type='application/json') + self.assertEqual(response.status_code,200) + # should also test if workout is created w = Workout.objects.get(id=1) self.assertEqual(w.name,'test') diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index 2b03fc55..2fbf8d59 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -2621,82 +2621,6 @@ def workout_smoothenpace_view(request,id=0,message="",successmessage=""): return HttpResponseRedirect(url) -# Process CrewNerd Summary CSV and update summary -@user_passes_test(ispromember,login_url="/rowers/paidplans", - message="This functionality requires a Pro plan or higher. If you are already a Pro user, please log in to access this functionality. If you are already a Pro user, please log in to access this functionality", - redirect_field_name=None) -def workout_crewnerd_summary_view(request,id=0,message="",successmessage=""): - row = get_workoutuser(id, request) - r = getrower(request.user) - breadcrumbs = [ - { - 'url':'/rowers/list-workouts/', - 'name':'Workouts' - }, - { - 'url':get_workout_default_page(request,id), - 'name': row.name - }, - { - 'url':reverse('workout_crewnerd_summary_view',kwargs={'id':id}), - 'name': 'CrewNerd Summary' - } - - ] - - if request.method == 'POST': - form = CNsummaryForm(request.POST,request.FILES) - if form.is_valid(): - f = request.FILES['file'] - res = handle_uploaded_file(f) - fname = res[1] - try: - sumd = summarydata(fname) - row.summary = sumd.allstats() - row.save() - os.remove(fname) - successmessage = "CrewNerd summary added" - messages.info(request,successmessage) - url = reverse('workout_edit_view', - kwargs = { - 'id':id, - }) - - return HttpResponseRedirect(url) - except: - try: - os.remove(fname) - except: - pass - message = "Something went wrong (workout_crewnerd_summary_view)" - messages.error(request,message) - url = reverse('workout_edit_view', - kwargs = { - 'id':id, - }) - return HttpResponseRedirect(url) - else: - return render(request, - "cn_form.html", - {'form':form, - 'active':'nav-workouts', - 'rower':r, - 'workout':row, - 'breadcrumbs':breadcrumbs, - 'teams':get_my_teams(request.user), - 'id':row.id}) - else: - form = CNsummaryForm() - - return render(request, - "cn_form.html", - {'form':form, - 'active':'nav-workouts', - 'rower':r, - 'workout':row, - 'breadcrumbs':breadcrumbs, - 'teams':get_my_teams(request.user), - 'id':row.id}) # Get weather for given location and date/time @permission_required('workout.change_workout',fn=get_workout_by_opaqueid,raise_exception=True) @@ -4846,7 +4770,6 @@ def workout_upload_api(request): q = request.POST post_data = {k: q.getlist(k) if len(q.getlist(k))>1 else v for k, v in q.items()} - # only allow local host hostt = request.get_host().split(':') if hostt[0] not in ['localhost','127.0.0.1','dev.rowsandall.com','rowsandall.com']: