nk api update
This commit is contained in:
@@ -972,7 +972,7 @@ def mocked_requests(*args, **kwargs):
|
||||
return MockResponse(nkstrokedata,200)
|
||||
if nkworkoutlisttester.match(args[0]):
|
||||
params = kwargs.pop('params',{})
|
||||
if 'startTime' in params and params['startTime'] == 1267136372998:
|
||||
if 'after' in params and params['after'] == 1267136372998:
|
||||
return MockResponse(nkimpellerworkoutlist,200)
|
||||
return MockResponse(nkworkoutlist,200)
|
||||
|
||||
|
||||
@@ -35,7 +35,8 @@ from rowers.views import c2_open, multi_compare_view
|
||||
from rowers.forms import (
|
||||
DocumentsForm,CNsummaryForm,RegistrationFormUniqueEmail,
|
||||
ChartParamChoiceForm,WorkoutMultipleCompareForm,
|
||||
BoxPlotChoiceForm)
|
||||
BoxPlotChoiceForm,PerformanceManagerForm,
|
||||
)
|
||||
import rowers.plots as plots
|
||||
import rowers.interactiveplots as iplots
|
||||
import datetime
|
||||
|
||||
@@ -1512,3 +1512,133 @@ class WorkoutStatsTestNew(TestCase):
|
||||
response = self.c.post('/rowers/user-analysis-select/',form_data)
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
class MarkerPerformanceTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
self.c = Client()
|
||||
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||
self.factory = RequestFactory()
|
||||
self.password = faker.word()
|
||||
self.u.set_password(self.password)
|
||||
self.u.save()
|
||||
|
||||
# need a 2k, 5k, 1h row
|
||||
self.werg2k = WorkoutFactory(
|
||||
user=self.r,
|
||||
duration=datetime.time(hour=0,minute=7,second=0),
|
||||
distance=2000,
|
||||
workouttype='rower',
|
||||
rankingpiece=True,
|
||||
)
|
||||
|
||||
# need a 2k, 5k, 1h row
|
||||
self.werg5k = WorkoutFactory(
|
||||
user=self.r,
|
||||
duration=datetime.time(hour=0,minute=18,second=0),
|
||||
distance=5000,
|
||||
workouttype='rower',
|
||||
rankingpiece=True,
|
||||
)
|
||||
|
||||
# need a 2k, 5k, 1h row
|
||||
self.werg1h = WorkoutFactory(
|
||||
user=self.r,
|
||||
duration=datetime.time(hour=1,minute=0,second=0),
|
||||
distance=15000,
|
||||
workouttype='rower',
|
||||
rankingpiece=True,
|
||||
)
|
||||
|
||||
def tearDown(self):
|
||||
for workout in self.user_workouts:
|
||||
try:
|
||||
os.remove(workout.csvfilename)
|
||||
except (IOError, FileNotFoundError, OSError):
|
||||
pass
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_create_marker_workouts(self, mocked_sqlalchemy,
|
||||
mocked_getsmallrowdata_db):
|
||||
login = self.c.login(username=self.u.username,password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date()
|
||||
enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date()
|
||||
|
||||
url = reverse('create_marker_workouts_view')
|
||||
response = self.c.get(url, follow=True)
|
||||
|
||||
expected_url = reverse('goldmedalscores_view',kwargs={'userid':self.u.id})
|
||||
|
||||
self.assertRedirects(response, expected_url=expected_url, status_code=302,target_status_code=200)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_performancemanager_view(self, mocked_sqlalchemy,
|
||||
mocked_getsmallrowdata_db):
|
||||
login = self.c.login(username=self.u.username,password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date()
|
||||
enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date()
|
||||
|
||||
url = reverse('performancemanager_view')
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
form_data = {
|
||||
'startdate':startdate.strftime("%Y-%m-%d"),
|
||||
'enddate': enddate.strftime("%Y-%m-%d"),
|
||||
'doform': True,
|
||||
'dofatigue': True,
|
||||
'metricchoice':'rscore',
|
||||
'modelchoice': 'coggan',
|
||||
'daterange': '',
|
||||
}
|
||||
form = PerformanceManagerForm(form_data)
|
||||
if not form.is_valid():
|
||||
print(form.errors)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
response = self.c.post(url,form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_ranking_view2(self, mocked_sqlalchemy,
|
||||
mocked_getsmallrowdata_db):
|
||||
login = self.c.login(username=self.u.username,password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date()
|
||||
enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date()
|
||||
|
||||
url = reverse('rankings_view2')
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
form_data = {
|
||||
'startdate':startdate.strftime("%Y-%m-%d"),
|
||||
'enddate': enddate.strftime("%Y-%m-%d"),
|
||||
'doform': True,
|
||||
'dofatigue': True,
|
||||
'metricchoice':'rscore',
|
||||
'modelchoice': 'coggan',
|
||||
'daterange': '',
|
||||
}
|
||||
form = DateRangeForm(form_data)
|
||||
if not form.is_valid():
|
||||
print(form.errors)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
response = self.c.post(url,form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@@ -13,99 +13,6 @@ from rowers.utils import calculate_age
|
||||
|
||||
import rowers.dataprep as dataprep
|
||||
|
||||
|
||||
@override_settings(TESTING=True)
|
||||
class OTWCPChartTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,surveydone=True,sex='male',
|
||||
weightcategory='hwt',
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
r = self.u.rower
|
||||
age = calculate_age(r.birthdate)
|
||||
self.c = Client()
|
||||
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||
self.factory = RequestFactory()
|
||||
self.password = faker.word()
|
||||
self.u.set_password(self.password)
|
||||
self.u.save()
|
||||
|
||||
self.lastdate = datetime.date(year=1970,month=1,day=1)
|
||||
|
||||
for filename in os.listdir(u'rowers/tests/testdata/otwcp'):
|
||||
a2 = 'rowers/tests/testdata/otwcp/temp/'+filename
|
||||
try:
|
||||
copy(u'rowers/tests/testdata/otwcp/'+filename,a2)
|
||||
row = rdata(a2)
|
||||
totaldist = row.df['cum_dist'].max()
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.loc[:,' ElapsedTime (sec)'].iloc[0]
|
||||
|
||||
|
||||
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)
|
||||
duration = datetime.time(hour=hours,minute=minutes,second=seconds)
|
||||
|
||||
workoutdate = row.rowdatetime.strftime('%Y-%m-%d')
|
||||
workoutstarttime = row.rowdatetime.strftime('%H:%M:%S')
|
||||
|
||||
w = Workout.objects.create(name=faker.word(),
|
||||
workouttype='water',
|
||||
user = self.r,
|
||||
starttime = workoutstarttime,
|
||||
date = workoutdate,
|
||||
duration = duration,
|
||||
distance = totaldist,
|
||||
csvfilename = a2,
|
||||
rankingpiece = True)
|
||||
w.save()
|
||||
|
||||
if row.rowdatetime.date() > self.lastdate:
|
||||
self.lastdate = row.rowdatetime.date()
|
||||
except:
|
||||
pass
|
||||
|
||||
def tearDown(self):
|
||||
try:
|
||||
for filename in os.listdir('rowers/tests/testdata/otwcp/temp'):
|
||||
path = os.path.join('rowers/tests/testdata/otwcp/temp/',filename)
|
||||
if not os.path.isdir(path):
|
||||
try:
|
||||
os.remove(path)
|
||||
except (IOError,FileNotFoundError,OSError):
|
||||
pass
|
||||
except (IOError,FileNotFoundError,OSError):
|
||||
pass
|
||||
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_cpraw)
|
||||
@patch('rowers.dataprep.getcpdata_sql',side_effect=mocked_getcpdata_sql)
|
||||
def test_otwrankingpieces(self, mocked_cpraw,mocked_getcpdata_sql):
|
||||
workouts = Workout.objects.filter(workouttype='water',
|
||||
rankingpiece=True,user=self.r)
|
||||
|
||||
delta, cpvalue, avgpower = dataprep.fetchcp(self.r,workouts)
|
||||
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_cpraw)
|
||||
@patch('rowers.dataprep.getcpdata_sql',side_effect=mocked_getcpdata_sql)
|
||||
def test_otwrankingpieces(self, mocked_cpraw,mocked_getcpdata_sql):
|
||||
login = self.c.login(username=self.u.username,password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
url = '/rowers/otw-bests/'
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
@override_settings(TESTING=True)
|
||||
class CPChartTest(TestCase):
|
||||
def setUp(self):
|
||||
|
||||
@@ -136,18 +136,18 @@ class URLTests(TestCase):
|
||||
'/rowers/me/workflowconfig2/user/1/',
|
||||
'/rowers/me/workflowdefault/',
|
||||
# '/rowers/multi-compare/',
|
||||
'/rowers/ote-bests/',
|
||||
# '/rowers/ote-bests/',
|
||||
# '/rowers/ote-bests/2016-01-01/2016-12-31/',
|
||||
'/rowers/ote-bests/user/1/',
|
||||
# '/rowers/ote-bests/user/1/',
|
||||
# '/rowers/ote-bests/user/1/2016-01-01/2016-12-31/',
|
||||
'/rowers/ote-bests2/',
|
||||
# '/rowers/ote-bests2/2016-01-01/2016-12-31/',
|
||||
'/rowers/ote-bests2/user/1/',
|
||||
'/rowers/ote-ranking/',
|
||||
# '/rowers/ote-ranking/',
|
||||
# '/rowers/ote-ranking/2016-01-01/2016-12-31/',
|
||||
'/rowers/ote-ranking/user/1/',
|
||||
# '/rowers/ote-ranking/user/1/',
|
||||
# '/rowers/ote-ranking/user/1/2016-01-01/2016-12-31/',
|
||||
'/rowers/otw-bests/',
|
||||
# '/rowers/otw-bests/',
|
||||
# '/rowers/otw-bests/2016-01-01/2016-12-31/',
|
||||
# '/rowers/otw-bests/user/1/2016-01-01/2016-12-31/',
|
||||
'/rowers/partners/',
|
||||
|
||||
@@ -34,12 +34,9 @@
|
||||
33,35,kill_async_job,kill job,TRUE,302,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE,
|
||||
34,36,post_progress,post progress,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE,
|
||||
35,37,graphs_view,view charts,TRUE,302,basic,200,302,basic,200,302,coach,200,302,FALSE,TRUE,FALSE,TRUE,TRUE,
|
||||
37,39,rankings_view,view ranking,TRUE,302,pro,200,302,pro,403,302,coach,200,302,FALSE,TRUE,FALSE,TRUE,TRUE,
|
||||
38,40,rankings_view2,view ranking,TRUE,302,pro,200,302,pro,403,302,coach,200,302,FALSE,TRUE,FALSE,TRUE,TRUE,
|
||||
39,41,otwrankings_view,view ranking,TRUE,302,pro,200,302,pro,403,302,coach,200,302,FALSE,TRUE,FALSE,TRUE,TRUE,
|
||||
40,42,oterankings_view,view ranking,TRUE,302,pro,200,302,pro,403,302,coach,200,302,FALSE,TRUE,FALSE,TRUE,TRUE,
|
||||
41,43,cum_flex,flex all chart,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE,
|
||||
42,44,analysis_view_data,redirects to analysis direct,TRUE,302,pro,302,302,pro,302,302,coach,302,302,FALSE,FALSE,FALSE,TRUE,TRUE,
|
||||
42,44,analysis_view_data,redirects to analysis direct,TRUE,302,pro,200,302,pro,200,302,coach,200,302,FALSE,FALSE,FALSE,TRUE,TRUE,
|
||||
43,47,cum_flex_data,flex all chart data (json),TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE,
|
||||
44,48,histo,histogram view,TRUE,302,pro,200,302,pro,403,302,coach,200,302,FALSE,TRUE,FALSE,TRUE,TRUE,
|
||||
45,49,histo_data,histogram data,TRUE,302,pro,200,302,pro,200,302,coach,200,302,FALSE,FALSE,FALSE,TRUE,TRUE,
|
||||
|
||||
|
Reference in New Issue
Block a user