diff --git a/rowers/mailprocessing.py b/rowers/mailprocessing.py index 8714a128..c41773ab 100644 --- a/rowers/mailprocessing.py +++ b/rowers/mailprocessing.py @@ -106,8 +106,7 @@ def make_new_workout_from_email(rower, datafile, name, cntr=0,testing=False): path='media/')[6:] fileformat = fileformat[2] - if testing: - print('Fileformat = ',fileformat) + f,e = os.path.splitext(datafilename) diff --git a/rowers/tasks.py b/rowers/tasks.py index fe6bd1ec..a42987e8 100644 --- a/rowers/tasks.py +++ b/rowers/tasks.py @@ -282,14 +282,14 @@ def summaryfromsplitdata(splitdata,data,filename,sep='|',workouttype='rower'): @app.task -def add(x, y): +def add(x, y): # pragma: no cover return x + y @app.task def handle_c2_sync(workoutid,url,headers,data,debug=False,**kwargs): response = requests.post(url,headers=headers,data=data) - if response.status_code not in [200,201]: + if response.status_code not in [200,201]: # pragma: no cover return 0 s = response.json() @@ -302,7 +302,7 @@ def handle_c2_sync(workoutid,url,headers,data,debug=False,**kwargs): @app.task def handle_sporttracks_sync(workoutid,url,headers,data,debug=False,**kwargs): response = requests.post(url,headers=headers,data=data) - if response.status_code not in [200,201]: + if response.status_code not in [200,201]: # pragma: no cover return 0 t = response.json() @@ -319,7 +319,7 @@ def handle_sporttracks_sync(workoutid,url,headers,data,debug=False,**kwargs): @app.task def handle_runkeeper_sync(workoutid,url,headers,data,debug=False,**kwargs): response = requests.post(url,headers=headers,data=data) - if response.status_code not in [200,201]: + if response.status_code not in [200,201]: # pragma: no cover return 0 uri = response.headers["Location"] @@ -379,7 +379,7 @@ def handle_c2_import_stroke_data(c2token, starttimeunix, csvfilename,debug=True,**kwargs): - if 'workouttype' in kwargs: + if 'workouttype' in kwargs: # pragma: no cover workouttype = kwargs['workouttype'] else: workouttype = 'rower' @@ -398,7 +398,7 @@ def handle_c2_import_stroke_data(c2token, ) return 1 - else: + else: # pragma: no cover url = "https://log.concept2.com/api/users/me/results/{id}".format(id=c2id) s = requests.get(url,headers=headers) @@ -456,7 +456,7 @@ def getagegrouprecord(age,sex='male',weightcategory='hwt', duration = 60*int(duration) try: df = indf[indf['duration'] == duration] - except KeyError: + except KeyError: # pragma: no cover df = pd.DataFrame() if not df.empty: @@ -478,13 +478,13 @@ def getagegrouprecord(age,sex='male',weightcategory='hwt', #power = np.polyval(poly_coefficients,age) power = 0.5*(np.abs(power)+power) - elif age is not None: + elif age is not None: # pragma: no cover new_age = np.range([age]) ww = griddata(ages.values, powers.values, new_age,method='linear',rescale=True) power = 0.5*(np.abs(power)+power) - else: + else: # pragma: no cover power = 0 return power diff --git a/rowers/tests/mocks.py b/rowers/tests/mocks.py index 162dbc1d..c479a40c 100644 --- a/rowers/tests/mocks.py +++ b/rowers/tests/mocks.py @@ -349,9 +349,16 @@ def mocked_cpraw(*args, **kwargs): return df -def StravaActivity(): +class StravalibResponse(): + def __init__(self,*args, **kwargs): + self.id = 1 + +class StravaActivity(): def wait(*args, **kwargs): - return 1 + return StravalibResponse() + + def __init__(*args, **kwargs): + pass @@ -362,6 +369,9 @@ class MockStravalibClient(): def update_activity(*args, **kwargs): return StravaActivity() + def __init__(*args,**kwargs): + pass + # Mocked Braintree ## Higher level - unfortunately didn't succeed in mocking the gateway diff --git a/rowers/tests/test_async_tasks.py b/rowers/tests/test_async_tasks.py index 2fb6f2c1..172d2fe1 100644 --- a/rowers/tests/test_async_tasks.py +++ b/rowers/tests/test_async_tasks.py @@ -68,6 +68,85 @@ class AsyncTaskTests(TestCase): except: pass + def test_summaryfromsplitdata(self): + splitdata = [ + { + "type": "distance", + "time": 415, + "rest_time": 600, + "stroke_rate": 35, + "distance": 220, + "heart_rate": { + "ending": 160, + "rest": 60 + } + }, + { + "type": "distance", + "time": 347, + "rest_time": 600, + "stroke_rate": 45, + "distance": 220, + "heart_rate": { + "ending": 170, + "rest": 70 + } + } + ] + + data = { + "date": "2015-08-30 14:24:00", + "timezone": "Europe/London", + "distance": 440, + "time": 762, + "type": "rower", + "weight_class": "H", + "heart_rate": { + "average": 140 + }, + "workout_type": "FixedDistanceInterval", + "rest_distance": 43, + "rest_time": 1200, + "workout": { + "targets": { + "stroke_rate": 30, + "heart_rate_zone": 4, + "pace": 1050 + }, + "intervals": [ + { + "type": "distance", + "time": 415, + "rest_time": 600, + "stroke_rate": 35, + "distance": 220, + "heart_rate": { + "ending": 160, + "rest": 60 + } + }, + { + "type": "distance", + "time": 347, + "rest_time": 600, + "stroke_rate": 45, + "distance": 220, + "heart_rate": { + "ending": 170, + "rest": 70 + } + } + ] + } + } + res = tasks.summaryfromsplitdata(splitdata,data,'test.csv') + + self.assertEqual(len(res[0]),478) + + @patch('rowers.tasks.stravalib.Client', side_effect=MockStravalibClient) + def test_strava_sync(self,MockStravalibClient): + res = tasks.handle_strava_sync('aap',self.wwater.id,self.wwater.csvfilename,'aap','activitytype','aa') + self.assertEqual(res,1) def test_safetimedelta(self): x = 5