Private
Public Access
1
0

Tests for SportTracks and Strava data structures

This commit is contained in:
Sander Roosendaal
2016-11-14 14:53:36 +01:00
parent a80e48978a
commit 836a3f6dee
11 changed files with 100 additions and 3 deletions

View File

@@ -19,6 +19,7 @@ from minimocktest import MockTestCase
import pandas as pd
import json
import numpy as np
from rowers import urls
from rowers.views import error500_view,error404_view,error400_view,error403_view
@@ -37,12 +38,12 @@ class DjangoTestCase(TestCase, MockTestCase):
class C2Objects(DjangoTestCase):
def test_strokedata(self):
with open('c2stroketestdata.txt','r') as infile:
with open('rowers/testdata/c2stroketestdata.txt','r') as infile:
res = json.load(infile)
strokedata = pd.DataFrame.from_dict(res['data'])
with open('c2testdata.txt','r') as infile:
with open('rowers/testdata/c2testdata.txt','r') as infile:
res = json.load(infile)
data = res['data']
@@ -56,8 +57,96 @@ class C2Objects(DjangoTestCase):
res = add_workout_from_strokedata(u,1,data,strokedata,source='c2')
class StravaObjects(DjangoTestCase):
def test_strokedata(self):
timejson = json.load(open('rowers/testdata/stravatimetestdata.txt','r'))
velojson = json.load(open('rowers/testdata/stravavelotestdata.txt','r'))
distancejson = json.load(open('rowers/testdata/stravadistancetestdata.txt','r'))
latlongjson = json.load(open('rowers/testdata/stravalatlongtestdata.txt','r'))
hrjson = json.load(open('rowers/testdata/stravahrtestdata.txt','r'))
spmjson = json.load(open('rowers/testdata/stravaspmtestdata.txt','r'))
workoutsummary = json.load(open('rowers/testdata/stravasummarytestdata.txt','r'))
workoutsummary['timezone'] = "Etc/UTC"
startdatetime = workoutsummary['start_date']
t = np.array(timejson[0]['data'])
d = np.array(distancejson[0]['data'])
nr_rows = len(t)
try:
spm = np.array( spmjson[1]['data'])
except IndexError:
spm = np.zeros(nr_rows)
try:
hr = np.array(hrjson[1]['data'])
except IndexError:
hr = np.zeros(nr_rows)
try:
velo = np.array(velojson[1]['data'])
except IndexError:
velo = np.zeros(nr_rows)
dt = np.diff(t).mean()
wsize = round(5./dt)
from stravastuff import ewmovingaverage
velo2 = ewmovingaverage(velo,wsize)
coords = np.array(latlongjson[0]['data'])
try:
lat = coords[:,0]
lon = coords[:,1]
except IndexError:
lat = np.zeros(len(t))
lon = np.zeros(len(t))
strokelength = velo*60./(spm)
strokelength[np.isinf(strokelength)] = 0.0
pace = 500./(1.0*velo2)
pace[np.isinf(pace)] = 0.0
strokedata = pd.DataFrame({'t':10*t,
'd':10*d,
'p':10*pace,
'spm':spm,
'hr':hr,
'lat':lat,
'lon':lon,
'strokelength':strokelength,
})
from rowers.views import add_workout_from_strokedata
u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
r = Rower.objects.create(user=u)
res = add_workout_from_strokedata(u,1,workoutsummary,strokedata,
source='strava')
class STObjects(DjangoTestCase):
def test_strokedata(self):
with open('rowers/testdata/sporttrackstestdata.txt','r') as infile:
data = json.load(infile)
from rowers.views import add_workout_from_stdata
u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
r = Rower.objects.create(user=u)
res = add_workout_from_stdata(u,1,data)
class TestErrorPages(TestCase):
def test_error_handlers(self):
self.assertTrue(urls.handler404.endswith('.error404_view'))