diff --git a/rowers/tests/test_fakers.py b/rowers/tests/test_fakers.py new file mode 100644 index 00000000..c7dfb940 --- /dev/null +++ b/rowers/tests/test_fakers.py @@ -0,0 +1,140 @@ +#from __future__ import print_function +import pytest + +pytestmark = pytest.mark.django_db + +from bs4 import BeautifulSoup +import re +from nose_parameterized import parameterized +from django.test import TestCase, Client,override_settings +from django.core.management import call_command +from django.utils.six import StringIO +from django.test.client import RequestFactory +from rowers.views import checkworkoutuser,c2_open + +from rowers.forms import ( + DocumentsForm,CNsummaryForm,RegistrationFormUniqueEmail, + ChartParamChoiceForm,WorkoutMultipleCompareForm) +import rowers.plots as plots +import rowers.interactiveplots as iplots +import datetime +from rowingdata import rowingdata as rdata +from rowingdata import rower as rrower +from django.utils import timezone +from rowers.rows import handle_uploaded_file +from django.core.files.uploadedfile import SimpleUploadedFile +from time import strftime,strptime,mktime,time,daylight +import os +from rowers.tasks import handle_makeplot +from rowers.utils import serialize_list,deserialize_list +from rowers.utils import NoTokenError +from shutil import copyfile +from nose.tools import assert_true +from mock import Mock, patch +from minimocktest import MockTestCase +import pandas as pd +import rowers.c2stuff as c2stuff + +import json +import numpy as np + +from rowers import urls +from rowers.views import ( + error500_view,error404_view,error400_view,error403_view + ) + +from rowers.dataprep import delete_strokedata + +from redis import StrictRedis +redis_connection = StrictRedis() + +from django_mailbox.models import Mailbox,MessageAttachment,Message + +from rowers.tests.mocks import * + +from rowers.models import * + +import factory +from faker import Factory + +faker = Factory.create() + +filename = 'rowers/tests/testdata/testdata.csv' + +row = rdata(filename) +totaldist = row.df['cum_dist'].max() +totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min() +totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)'] + + +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') + +nu = datetime.datetime.now() + +class UserFactory(factory.DjangoModelFactory): + class Meta: + model = User + + email = faker.email() + username = faker.profile()['username'] + + first_name = faker.name().split(' ')[0] + last_name = faker.name().split(' ')[0] + +class WorkoutFactory(factory.DjangoModelFactory): + class Meta: + model = Workout + + name = factory.LazyAttribute(lambda _: faker.word()) + notes = faker.text() + startdatetime = row.rowdatetime + starttime = workoutstarttime + workouttype='water' + date=timezone.now().date() + duration=duration + distance=totaldist + csvfilename=filename + +class ModelObjectsTest(TestCase): + def setUp(self): + self.u = UserFactory() + self.r = Rower.objects.create(user=self.u, + birthdate=faker.profile()['birthdate'], + gdproptin=True) + + self.c = Client() + + def test_workouts_compare(self): + user_workouts = WorkoutFactory.create_batch(5, user=self.r) + + url = '/rowers/team-compare-select/workout/1/team/0/user/1/' + + response = self.c.get(url,follow=True) + self.assertEqual(response.status_code,200) + + form_data = { + 'chartform':'Compare', + 'plottype':'scatter', + 'teamid':0, + 'workouts':['1','2','3'], + 'xparam':'distance', + 'yparam':'hr', + } + + form = WorkoutMultipleCompareForm(form_data) + chartform = ChartParamChoiceForm(form_data) + self.assertTrue(form.is_valid) + self.assertTrue(chartform.is_valid) + + response = self.c.post('/rowers/multi-compare',form_data,follow=True) + + self.assertEqual(response.status_code,200)