261 lines
8.4 KiB
Python
261 lines
8.4 KiB
Python
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
from __future__ import unicode_literals
|
|
|
|
#from __future__ import print_function
|
|
from .statements import *
|
|
nu = datetime.datetime.now()
|
|
|
|
from rowingdata import rowingdata as rdata
|
|
from rowingdata import rower as rrower
|
|
|
|
from rowers.models import User,Rower, Workout
|
|
|
|
class UserMiddleWareTest(TestCase):
|
|
def setUp(self):
|
|
u = User.objects.create_user('john',
|
|
'sander@ds.ds',
|
|
'koeinsloot')
|
|
self.r = Rower.objects.create(user=u)
|
|
|
|
self.c = Client()
|
|
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(csvfile=filename,rower=rr)
|
|
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)
|
|
|
|
|
|
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
|
|
)
|
|
|
|
|
|
def test_middleware(self):
|
|
response = self.c.get('/rowers/list-workouts',follow=True)
|
|
self.assertEqual(response.status_code,200)
|
|
|
|
|
|
class UserTestsNoRower(TestCase):
|
|
def setUp(self):
|
|
u = User.objects.create_user('john',
|
|
'sander@ds.ds',
|
|
'koeinsloot')
|
|
|
|
self.c = Client()
|
|
self.c.login(username='john',password='koeinsloot')
|
|
|
|
|
|
def test_user(self):
|
|
response = self.c.get('/rowers/list-workouts',follow=True)
|
|
self.assertEqual(response.status_code,200)
|
|
|
|
class UserPreferencesTest(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()
|
|
|
|
def tearDown(self):
|
|
for workout in self.user_workouts:
|
|
try:
|
|
os.remove(workout.csvfilename)
|
|
except (IOError, OSError, FileNotFoundError):
|
|
pass
|
|
|
|
def test_accountsettings(self):
|
|
login = self.c.login(username=self.u.username,password=self.password)
|
|
self.assertTrue(login)
|
|
|
|
url = '/rowers/me/edit/'
|
|
|
|
form_data = {
|
|
'sex':'male',
|
|
'birthdate':'1972-04-10',
|
|
'weightcategory':'lwt',
|
|
'adaptiveclass':'None',
|
|
'getemailnotifications':True,
|
|
'getimportantemails':True,
|
|
'defaulttimezone':'UTC',
|
|
'showfavoritechartnotes':False,
|
|
'fav_analysis':'compare',
|
|
'usersmooth':2,
|
|
'defaultlandingpage':'workout_edit_view',
|
|
'first_name': self.u.first_name,
|
|
'last_name': self.u.last_name,
|
|
'email':self.u.email
|
|
}
|
|
|
|
form = AccountRowerForm(form_data)
|
|
userform = UserForm(form_data,instance=self.u)
|
|
self.assertTrue(form.is_valid())
|
|
self.assertTrue(userform.is_valid())
|
|
|
|
response = self.c.post(url,form_data)
|
|
self.assertEqual(response.status_code,200)
|
|
|
|
response = self.c.get(url)
|
|
self.assertEqual(response.status_code,200)
|
|
|
|
|
|
def test_exportsettings(self):
|
|
login = self.c.login(username=self.u.username,password=self.password)
|
|
self.assertTrue(login)
|
|
|
|
url = '/rowers/me/exportsettings/'
|
|
response = self.c.get(url)
|
|
self.assertEqual(response.status_code,200)
|
|
|
|
form_data = {
|
|
'stravaexportas':'Rowing',
|
|
'garminactivity': 'RUNNING',
|
|
'polar_auto_import':True,
|
|
'c2_auto_export':False,
|
|
'c2_auto_import':False,
|
|
'mapmyfitness_auto_export':False,
|
|
'runkeeper_auto_export':False,
|
|
'sporttracks_auto_export':False,
|
|
'strava_auto_export':False,
|
|
'strava_auto_import':False,
|
|
'trainingpeaks_auto_export':False,
|
|
}
|
|
|
|
form = RowerExportForm(form_data)
|
|
self.assertTrue(form.is_valid())
|
|
|
|
response = self.c.post(url,form_data)
|
|
self.assertEqual(response.status_code,200)
|
|
|
|
|
|
def test_zones_workflowsettings(self):
|
|
login = self.c.login(username=self.u.username,password=self.password)
|
|
self.assertTrue(login)
|
|
|
|
post_data = {
|
|
u'middlepanel-0-panel':u'panel_middlesocial.html',
|
|
u'middlepanel-1-panel':u'panel_statcharts.html',
|
|
u'middlepanel-2-panel':u'flexthumbnails.html',
|
|
u'middlepanel-3-panel':u'panel_summary.html',
|
|
u'middlepanel-4-panel':u'panel_map.html',
|
|
u'middlepanel-5-panel':u'panel_notes.html',
|
|
u'middlepanel-6-panel':u'panel_shortcomment.html',
|
|
u'middlepanel-7-panel':u'None',
|
|
u'middlepanel-8-panel':u'None',
|
|
u'middlepanel-INITIAL_FORMS':'8',
|
|
u'middlepanel-MAX_NUM_FORMS':u'1000',
|
|
u'middlepanel-MIN_NUM_FORMS':u'0',
|
|
u'middlepanel-TOTAL_FORMS':u'8',
|
|
}
|
|
|
|
MiddlePanelFormSet = formset_factory(WorkFlowMiddlePanelElement,extra=1)
|
|
middlepanel_formset = MiddlePanelFormSet(post_data,prefix='middlepanel')
|
|
self.assertTrue(middlepanel_formset.is_valid())
|
|
|
|
url = '/rowers/me/workflowconfig2/'
|
|
response = self.c.get(url)
|
|
|
|
self.assertEqual(response.status_code,200)
|
|
|
|
response = self.c.post(url,post_data)
|
|
self.assertEqual(response.status_code,200)
|
|
|
|
def test_zones_preferences(self):
|
|
login = self.c.login(username=self.u.username,password=self.password)
|
|
self.assertTrue(login)
|
|
|
|
form_data = {
|
|
'max':181,
|
|
'ut2':140,
|
|
'ut1':150,
|
|
'tr':170,
|
|
'at':160,
|
|
'an':175,
|
|
'rest':50,
|
|
'hrrestname':'rest',
|
|
'hrut2name':'ut2',
|
|
'hrut1name':'ut1',
|
|
'hratname':'at',
|
|
'hrtrname':'tr',
|
|
'hranname':'an',
|
|
'hrmaxname':'max',
|
|
}
|
|
|
|
form = RowerForm(form_data)
|
|
self.assertTrue(form.is_valid())
|
|
|
|
form = RowerHRZonesForm(form_data)
|
|
self.assertTrue(form.is_valid())
|
|
|
|
url = '/rowers/me/preferences/'
|
|
|
|
response = self.c.get(url)
|
|
self.assertEqual(response.status_code,200)
|
|
|
|
response = self.c.post(url,form_data)
|
|
self.assertEqual(response.status_code,200)
|
|
|
|
form_data = {
|
|
'hrftp': 160,
|
|
'ftp':230,
|
|
'otwslack':14
|
|
}
|
|
|
|
form = RowerPowerForm(form_data)
|
|
self.assertTrue(form.is_valid())
|
|
|
|
response = self.c.post(url,form_data,follow=True)
|
|
self.assertEqual(response.status_code,200)
|
|
|
|
|
|
form_data = {
|
|
'pw_ut2':150,
|
|
'pw_ut1':160,
|
|
'pw_at':170,
|
|
'pw_tr':200,
|
|
'pw_an':230,
|
|
'ut3name':'Recovery',
|
|
'ut2name':'Pwr UT2',
|
|
'ut1name':'Pwr UT1',
|
|
'atname':'Pwr AT',
|
|
'trname':'Pwr TR',
|
|
'anname':'Explode'
|
|
}
|
|
|
|
response = self.c.post(url,form_data)
|
|
self.assertEqual(response.status_code,200)
|