Private
Public Access
1
0
Files
rowsandall/rowers/tests/test_teams.py
2019-01-14 11:15:31 +01:00

213 lines
6.3 KiB
Python

from statements import *
nu = datetime.datetime.now()
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')
from rowers.teams import *
# add following tests:
# - when member leaves team, his name should be removed from planned sessions
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 SessionFactory(factory.DjangoModelFactory):
class Meta:
model = PlannedSession
name = factory.LazyAttribute(lambda _: faker.word())
comment = faker.text()
class TeamFactory(factory.DjangoModelFactory):
class Meta:
model = Team
name = factory.LazyAttribute(lambda _: faker.word())
notes = faker.text()
private = 'open'
viewing = 'allmembers'
class TeamCreateFactory(TestCase):
def setUp(self):
redis_connection.publish('tasks','KILL')
self.user_passwords = []
usernames = [
'user1',
'user2',
'user3',
'user4',
'user5',
'user6',
]
self.users = []
for i in range(6):
u = UserFactory(username=usernames[i])
self.users.append(u)
r = Rower.objects.create(
birthdate=faker.profile()['birthdate'],
gdproptin=True,
gdproptindate=timezone.now(),
rowerplan='coach',
user=u,
clubsize=3
)
r.save()
password = faker.word()
u.set_password(password)
u.save()
self.user_passwords.append(password)
workouts = WorkoutFactory.create_batch(5, user=r)
self.c = Client()
self.u = self.users[0]
self.password = self.user_passwords[0]
self.t = TeamFactory(manager=self.u)
def test_teamview(self):
login = self.c.login(username=self.u.username, password = self.password)
self.assertTrue(login)
url = '/rowers/team/{t}/'.format(t=self.t.id)
response = self.c.get(url)
self.assertEqual(response.status_code, 200)
def test_teamview_member(self):
id,comment = add_member(self.t.id,self.users[1].rower)
self.assertEqual(id,self.t.id)
login = self.c.login(username=self.users[1].username, password = self.user_passwords[1])
self.assertTrue(login)
url = '/rowers/team/{t}/'.format(t=self.t.id)
response = self.c.get(url)
self.assertEqual(response.status_code, 200)
def test_team_invite_view(self):
login = self.c.login(username=self.u.username, password = self.password)
self.assertTrue(login)
url = '/rowers/team/{t}/'.format(t=self.t.id)
form_data = {
'email': self.users[1].email,
'user': u''
}
response = self.c.post(url, form_data)
self.assertEqual(response.status_code, 200)
def test_lowlevel_update_team(self):
id, comment = update_team(self.t,faker.word(),self.u,'open',faker.text(),'allmembers')
self.assertEqual(id,1)
id, comment = update_team(self.t,faker.word(),self.users[2],'open',faker.text(),'allmembers')
self.assertEqual(id,0)
team = TeamFactory(manager = self.users[2])
id, comment = update_team(team, self.t.name, self.users[2], 'open', faker.text(),
'allmembers')
self.assertEqual(id,0)
self.assertEqual(comment,'Team name duplication')
def test_lowlevel_create_team(self):
id, comment = create_team(faker.word(), self.u)
self.assertEqual(id,2)
id, comment = create_team(self.t.name,self.u)
self.assertEqual(id,0)
self.assertEqual(comment,'Team name duplication')
def test_lowlevel_remove_team(self):
team = TeamFactory(manager=self.u)
tid = team.id
id, comment = add_member(team.id,self.users[1].rower)
id, comment = add_member(team.id,self.users[2].rower)
result = remove_team(team.id)
test = Team.objects.filter(id=tid)
self.assertEqual(len(test),0)
def test_lowlevel_remove_member(self):
id, comment = add_member(self.t.id, self.users[3].rower)
id, comment = remove_member(self.t.id, self.users[3].rower)
self.assertEqual(id, self.t.id)
def test_lowlevel_create_invite(self):
id, comment = add_member(self.t.id, self.users[1].rower)
# cannot create invite for someone who already is a member
id, comment = create_invite(self.t,self.u,user=self.users[1])
self.assertEqual(id,0)
self.assertEqual(comment,'Already member of that team')
id, comment = remove_member(self.t.id, self.users[1].rower)
# cannot create invite for team you don't manage
id, comment = create_invite(self.t, self.users[3],self.users[4])
self.assertEqual(id,0)
# cannot exceed club size
for i in range(5):
id, comment = create_invite(self.t,self.u,user=self.users[i+1])
if i <= self.u.rower.clubsize:
self.assertEqual(comment,'Invitation created')
else:
self.assertEqual(id,0)