Private
Public Access
1
0

rdata fixes

This commit is contained in:
Sander Roosendaal
2021-04-12 19:10:15 +02:00
parent 53b5660c8f
commit bfd7a5b664
8 changed files with 199 additions and 45 deletions

View File

@@ -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)']

View File

@@ -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)