Private
Public Access
1
0
Files
rowsandall/rowers/tests/test_user.py

263 lines
8.5 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, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='pro')
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',
'defaultlandingpage2':'workout_delete',
'defaultlandingpage3': 'workout_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,
'otwftp':224
}
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)