diff --git a/rowers/tests/mocks.py b/rowers/tests/mocks.py index e48495c8..6937e41c 100644 --- a/rowers/tests/mocks.py +++ b/rowers/tests/mocks.py @@ -125,6 +125,23 @@ def mocked_read_df_cols_sql(ids, columns, convertnewtons=True): return df, extracols +def mocked_stravaexport(f2,workoutname,stravatoken,description='', + activity_type='Rowing'): + print "this is mocked strava export" + return 1,'success' + +def StravaActivity(): + def wait(*args, **kwargs): + return 1 + +class MockStravalibClient(): + def upload_activity(*args, **kwargs): + return StravaActivity() + + def update_activity(*args, **kwargs): + return StravaActivity() + + class mocked_rowingdata(rowingdata): def __init__(self, *args, **kwargs): super(mocked_rowingdata).__init__(*args, **kwargs) @@ -271,6 +288,7 @@ def mocked_requests(*args, **kwargs): return MockResponse(json_data,200) + if not args: return MockSession() diff --git a/rowers/tests/test_imports.py b/rowers/tests/test_imports.py index fad25be5..115484f9 100644 --- a/rowers/tests/test_imports.py +++ b/rowers/tests/test_imports.py @@ -6,7 +6,7 @@ pytestmark = pytest.mark.django_db from bs4 import BeautifulSoup import re from nose_parameterized import parameterized -from django.test import TestCase, Client,override_settings +from django.test import TestCase, Client,override_settings, modify_settings from django.core.management import call_command from django.utils.six import StringIO from django.test.client import RequestFactory @@ -36,6 +36,8 @@ import rowers.c2stuff as c2stuff import json import numpy as np +import rowers + from rowers import urls from rowers.views import ( error500_view,error404_view,error400_view,error403_view @@ -278,9 +280,58 @@ class StravaObjects(DjangoTestCase): ) self.r.stravatoken = '12' + self.r.stravarefreshtoken = '123' self.r.save() self.c.login(username='john',password='koeinsloot') + self.nu = datetime.datetime.now() + + filename = 'rowers/tests/testdata/testdata.csv' + + rr = rrower(hrmax=self.r.max,hrut2=self.r.ut2, + hrut1=self.r.ut1,hrat=self.r.at, + hrtr=self.r.tr,hran=self.r.an,ftp=self.r.ftp) + row = rdata(filename,rower=rr) + totaldist = row.df['cum_dist'].max() + totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min() + totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)'] + + + hours = int(totaltime/3600.) + minutes = int((totaltime - 3600.*hours)/60.) + seconds = int(totaltime - 3600.*hours - 60.*minutes) + tenths = int(10*(totaltime - 3600.*hours - 60.*minutes - seconds)) + + duration = "%s:%s:%s.%s" % (hours,minutes,seconds,tenths) + + + workoutdate = row.rowdatetime.strftime('%Y-%m-%d') + workoutstarttime = row.rowdatetime.strftime('%H:%M:%S') + + self.w = Workout.objects.create( + name='testworkout',workouttype='water', + user=self.r,date=self.nu.strftime('%Y-%m-%d'), + starttime=workoutstarttime, + startdatetime=row.rowdatetime, + duration=duration,distance=totaldist, + csvfilename=filename + ) + + +# @patch('rowers.stravastuff.requests.post', side_effect=mocked_requests) +# @patch('rowers.views.stravastuff.handle_stravaexport') + #@patch('rowers.dataprep.getsmallrowdata_db') + #def test_strava_upload(self, mock_post,MockStravalibClient, + # mocked_getsmallrowdata_db): + # def test_strava_upload(self,mock_post, mocked_stravaexport): + # response = self.c.get('/rowers/workout/1/stravauploadw/') + + # self.assertRedirects(response, + # expected_url = '/rowers/workout/1/edit/', + # status_code=302,target_status_code=200) + + # self.assertEqual(response.url, '/rowers/workout/1/edit/') + # self.assertEqual(response.status_code, 302) @patch('rowers.stravastuff.requests.post', side_effect=mocked_requests) def test_strava_list(self, mock_get): @@ -289,16 +340,28 @@ class StravaObjects(DjangoTestCase): self.assertEqual(response.status_code,200) @patch('rowers.utils.requests.get', side_effect=mocked_requests) - def test_strava_import(self, mock_get): + @patch('rowers.dataprep.getsmallrowdata_db') + def test_strava_import(self, mock_get, + mocked_getsmallrowdata_db): response = self.c.get('/rowers/workout/stravaimport/12',follow=True) self.assertRedirects(response, - expected_url='/rowers/workout/1/edit/', + expected_url='/rowers/workout/2/edit/', status_code=301,target_status_code=200) self.assertEqual(response.status_code, 200) + @patch('rowers.stravastuff.requests.post', side_effect=mocked_requests) + def test_strava_callback(self, mock_post): + response = self.c.get('/stravacall_back?code=absdef23',follow=True) + self.assertEqual(response.status_code, 200) + + @patch('rowers.stravastuff.requests.post', side_effect=mocked_requests) + def test_strava_token_refresh(self, mock_post): + result = rowers.stravastuff.rower_strava_token_refresh(self.u) + self.assertEqual(result,"987654321234567898765432123456789") + #@pytest.mark.django_db diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index c8e11073..7e09e811 100644 Binary files a/rowers/tests/testdata/testdata.csv.gz and b/rowers/tests/testdata/testdata.csv.gz differ diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz new file mode 100644 index 00000000..2d9b5194 Binary files /dev/null and b/rowers/tests/testdata/testdata.tcx.gz differ diff --git a/rowers/views.py b/rowers/views.py index bf920f55..a2ab56d6 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -2252,7 +2252,7 @@ def workout_strava_upload_view(request,id=0): try: thetoken = strava_open(request.user) except NoTokenError: - return HttpResponseRedirect("/rowers/me/stravaauthorize") + return HttpResponseRedirect("/rowers/me/stravaauthorize/") if (r.stravatoken == '') or (r.stravatoken is None): s = "Token doesn't exist. Need to authorize" diff --git a/rowsandall_app/settings_dev.py b/rowsandall_app/settings_dev.py index 8443b40a..b4953f19 100644 --- a/rowsandall_app/settings_dev.py +++ b/rowsandall_app/settings_dev.py @@ -96,3 +96,4 @@ EMAIL_USE_TLS = CFG['email_use_tls'] DEFAULT_FROM_EMAIL = 'info@rowsandall.com' SETTINGS_NAME = 'rowsandall_app.settings_dev' +