rdata fixes
This commit is contained in:
@@ -105,7 +105,7 @@ def get_random_file(filename='rowers/tests/testdata/testdata.csv',name=''):
|
||||
except AttributeError:
|
||||
fromstring = 'none_'
|
||||
|
||||
row = rdata(filename)
|
||||
row = rdata(csvfile=filename)
|
||||
totaldist = row.df['cum_dist'].max()
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.loc[row.df.index[0],' ElapsedTime (sec)']
|
||||
|
||||
@@ -3,6 +3,8 @@ from __future__ import division
|
||||
from __future__ import print_function
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.test import RequestFactory
|
||||
|
||||
#from __future__ import print_function
|
||||
from .statements import *
|
||||
nu = datetime.datetime.now()
|
||||
@@ -14,8 +16,39 @@ import rowers.courses as courses
|
||||
import rowers.tasks as tasks
|
||||
from rowers.views.racesviews import *
|
||||
from rowers.utils import calculate_age
|
||||
from rowers.views import addmanual_view
|
||||
|
||||
# to do - add test for manual form with image
|
||||
from django.contrib.messages.storage.fallback import FallbackStorage
|
||||
|
||||
from base64 import b64encode
|
||||
import base64
|
||||
|
||||
|
||||
from django.core.files.base import File
|
||||
from io import BytesIO
|
||||
|
||||
from PIL import Image
|
||||
from io import StringIO
|
||||
|
||||
from django.core.files.uploadedfile import InMemoryUploadedFile
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
|
||||
def create_image(storage, filename, size=(100, 100), image_mode='RGB', image_format='PNG'):
|
||||
"""
|
||||
Generate a test image, returning the filename that it was saved as.
|
||||
|
||||
If ``storage`` is ``None``, the BytesIO containing the image data
|
||||
will be passed instead.
|
||||
"""
|
||||
data = BytesIO()
|
||||
Image.new(image_mode, size).save(data, image_format)
|
||||
data.seek(0)
|
||||
if not storage:
|
||||
return data
|
||||
image_file = ContentFile(
|
||||
b64encode(data.read())
|
||||
)
|
||||
return storage.save(filename, image_file)
|
||||
|
||||
@override_settings(TESTING=True)
|
||||
class ChallengesTest(TestCase):
|
||||
@@ -608,6 +641,14 @@ class ChallengesTest(TestCase):
|
||||
|
||||
@override_settings(TESTING=True)
|
||||
class IndoorChallengesTest(TestCase):
|
||||
@staticmethod
|
||||
def get_image_file(name, ext='png', size=(50, 50), color=(256, 0, 0)):
|
||||
file_obj = BytesIO()
|
||||
image = Image.new("RGBA", size=size, color=color)
|
||||
image.save(file_obj, ext)
|
||||
file_obj.seek(0)
|
||||
return File(file_obj, name=name)
|
||||
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
@@ -671,7 +712,7 @@ class IndoorChallengesTest(TestCase):
|
||||
contact_email=contact_email,
|
||||
country = 'Netherlands',
|
||||
manager=self.u,
|
||||
sessionvalue=result['totaldist'],
|
||||
sessionvalue=int(result['totaldist']),
|
||||
sessionunit='m',
|
||||
sessionmode='distance',
|
||||
)
|
||||
@@ -740,6 +781,111 @@ class IndoorChallengesTest(TestCase):
|
||||
response = self.c.post(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_upload_manual(self, mocked_sqlalchemy):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
race = self.IndoorSpeedOrder
|
||||
|
||||
# look at event
|
||||
url = reverse('virtualevent_view',kwargs={'id':race.id})
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
if self.r.birthdate:
|
||||
age = calculate_age(self.r.birthdate)
|
||||
else:
|
||||
age = 25
|
||||
|
||||
# register
|
||||
url = reverse('indoorvirtualevent_register_view',kwargs={'id':race.id})
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
form_data = {
|
||||
'teamname': 'ApeTeam',
|
||||
'boatclass': 'rower',
|
||||
'weightcategory': 'hwt',
|
||||
'adaptiveclass': 'None',
|
||||
'age': age,
|
||||
'mix': False,
|
||||
'acceptsocialmedia': True,
|
||||
}
|
||||
form = IndoorVirtualRaceResultForm(form_data)
|
||||
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
|
||||
response = self.c.post(url,form_data,follow=True)
|
||||
expected_url = reverse('virtualevent_view',kwargs={'id':race.id})
|
||||
self.assertRedirects(response, expected_url=expected_url,
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
# submit result (manual)
|
||||
|
||||
image = self.get_image_file('image.jpg')
|
||||
|
||||
form_data = {
|
||||
'name': faker.word(),
|
||||
'date': nu.date().strftime("%Y-%m-%d"),
|
||||
'starttime': '10:01:43',
|
||||
'timezone': 'UTC',
|
||||
'duration': '00:02:00.0',
|
||||
'distance': race.sessionvalue,
|
||||
'workouttype': 'rower',
|
||||
'boattype': '1x',
|
||||
'weightcategory': 'hwt',
|
||||
'adaptiveclass': 'None',
|
||||
'notes': faker.text(),
|
||||
'rankingpiece': True,
|
||||
'duplicate': False,
|
||||
'avghr': '160',
|
||||
'avgpwr': 0,
|
||||
'rpe':4,
|
||||
'avgspm': 40,
|
||||
}
|
||||
|
||||
form = MetricsForm(form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
form = WorkoutForm(form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
file_data = {'file':image}
|
||||
|
||||
form = ImageForm(form_data,file_data)
|
||||
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
url = '/rowers/workout/addmanual/'+str(race.id)+'/'
|
||||
response = self.c.get(url)
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
#form_data['file'] = image
|
||||
request = self.factory.post(url,
|
||||
data=form_data,
|
||||
files={'file':image},
|
||||
)
|
||||
setattr(request, 'session', 'session')
|
||||
messages = FallbackStorage(request)
|
||||
setattr(request, '_messages', messages)
|
||||
|
||||
request.user = self.u
|
||||
|
||||
response = addmanual_view(request,raceid=str(race.id))
|
||||
|
||||
expected = reverse('virtualevent_view',kwargs={'id':race.id})
|
||||
|
||||
self.assertEqual(response.status_code,302)
|
||||
self.assertEqual(response.url,expected)
|
||||
|
||||
|
||||
@patch('rowers.views.racesviews.myqueue')
|
||||
def test_virtualevent_view(self,mocked_myqueue):
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
|
||||
Reference in New Issue
Block a user