fixes, test_aworkouts misbehaving
This commit is contained in:
@@ -60,7 +60,7 @@ def updatecp(delta,cpvalues,r,workouttype='water'):
|
||||
|
||||
return 1
|
||||
|
||||
def cpfit(powerdf):
|
||||
def cpfit(powerdf,fraclimit=0.0001,nmax=1000):
|
||||
# Fit the data to thee parameter CP model
|
||||
fitfunc = lambda pars,x: abs(pars[0])/(1+(x/abs(pars[2]))) + abs(pars[1])/(1+(x/abs(pars[3])))
|
||||
errfunc = lambda pars,x,y: fitfunc(pars,x)-y
|
||||
@@ -96,11 +96,13 @@ def cpfit(powerdf):
|
||||
|
||||
frac = abs(ddmin)/fitpoints.mean()
|
||||
|
||||
while frac>0.0001:
|
||||
counter = 0
|
||||
while frac>fraclimit and counter<nmax:
|
||||
fitpoints = fitpoints*(fitpoints.mean()-ddmin)/(fitpoints.mean())
|
||||
dd = fitpoints-theavpower
|
||||
ddmin = dd.min()
|
||||
frac = abs(ddmin)/fitpoints.mean()
|
||||
counter += 1
|
||||
|
||||
ratio = fitpoints.mean()/fitpoints0.mean()
|
||||
|
||||
@@ -111,7 +113,7 @@ def getlogarr(maxt):
|
||||
#print(maxlog10,round(maxlog10))
|
||||
aantal = 10*round(maxlog10)
|
||||
logarr = np.arange(aantal+1)/10.
|
||||
|
||||
|
||||
res = []
|
||||
for la in logarr:
|
||||
try:
|
||||
|
||||
@@ -158,6 +158,8 @@ class BoxPlotTest(TestCase):
|
||||
options['userid'] = 1
|
||||
options['plotfield'] = 'spm'
|
||||
options['rankingonly'] = False
|
||||
options['cpfit'] = 'data'
|
||||
options['piece'] = 4
|
||||
|
||||
session = self.c.session
|
||||
session['options'] = options
|
||||
@@ -1065,6 +1067,8 @@ class WorkoutStatsTestNew(TestCase):
|
||||
'spmmax':55,
|
||||
'workmin':0,
|
||||
'workmax':1500,
|
||||
'cpfit':'data',
|
||||
'piece': 4,
|
||||
'includereststrokes':False,
|
||||
'modality':'all',
|
||||
'waterboattype':['1x','2x','4x'],
|
||||
|
||||
@@ -4,6 +4,7 @@ from __future__ import print_function
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from .statements import *
|
||||
from django.db import transaction
|
||||
|
||||
nu = datetime.datetime.now()
|
||||
|
||||
@@ -144,57 +145,59 @@ class WorkoutViewTest(TestCase):
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
@pytest.mark.django_db(transaction=True)
|
||||
def test_joins(self, mocked_sqlalchemy, mocked_getsmallrowdata_db):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
with transaction.atomic():
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
url = reverse('workouts_join_select')
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
url = reverse('workouts_join_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)
|
||||
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')
|
||||
}
|
||||
date_form_data = {
|
||||
'startdate': d1.strftime('%Y-%m%d'),
|
||||
'enddate': d2.strftime('%Y-%m%d')
|
||||
}
|
||||
|
||||
response = self.c.post(url,date_form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
response = self.c.post(url,date_form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
url = reverse('workouts_join_view')
|
||||
url = reverse('workouts_join_view')
|
||||
|
||||
response = self.c.get(url,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
response = self.c.get(url,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
expected_url = reverse('workouts_join_select')
|
||||
self.assertRedirects(response,
|
||||
expected_url = reverse('workouts_join_select')
|
||||
self.assertRedirects(response,
|
||||
expected_url=expected_url,
|
||||
status_code=302,
|
||||
target_status_code=200)
|
||||
|
||||
form_data = {
|
||||
'workout_name': 'joined',
|
||||
'set_private': False,
|
||||
'workouts': [str(self.werg1.id),str(self.werg2.id),str(self.werg3.id)],
|
||||
form_data = {
|
||||
'workout_name': 'joined',
|
||||
'set_private': False,
|
||||
'workouts': [str(self.werg1.id),str(self.werg2.id),str(self.werg3.id)],
|
||||
}
|
||||
|
||||
form = WorkoutMultipleCompareForm(form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
form = WorkoutMultipleCompareForm(form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
form = WorkoutJoinParamForm(form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
form = WorkoutJoinParamForm(form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
response = self.c.post(url,form_data,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
response = self.c.post(url,form_data,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
expected_url = reverse(self.r.defaultlandingpage,
|
||||
expected_url = reverse(self.r.defaultlandingpage,
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(12)
|
||||
})
|
||||
|
||||
self.assertRedirects(response,
|
||||
self.assertRedirects(response,
|
||||
expected_url=expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
@@ -485,27 +488,29 @@ class WorkoutViewTest(TestCase):
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
@patch('rowers.dataprep.getrowdata_db',side_effect=mocked_getrowdata_db)
|
||||
@pytest.mark.django_db(transaction=True)
|
||||
def test_workout_split(self, mocked_sqlalchemy, mocked_getsmallrowdata_db,
|
||||
mocked_getrowdata_db):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
with transaction.atomic():
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
url = reverse('workout_split_view',kwargs={'id':encoder.encode_hex(self.werg1.id)})
|
||||
url = reverse('workout_split_view',kwargs={'id':encoder.encode_hex(self.werg1.id)})
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
form_data = {
|
||||
'splittime': '2:00',
|
||||
'splitmode': ['keep original','keep first','keep second']
|
||||
}
|
||||
form_data = {
|
||||
'splittime': '2:00',
|
||||
'splitmode': ['keep original','keep first','keep second']
|
||||
}
|
||||
|
||||
form = WorkoutSplitForm(form_data)
|
||||
form = WorkoutSplitForm(form_data)
|
||||
|
||||
self.assertTrue(form.is_valid())
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
response = self.c.post(url, form_data,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
response = self.c.post(url, form_data,follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getrowdata_db',side_effect=mocked_getrowdata_db)
|
||||
|
||||
Reference in New Issue
Block a user