From 0fdd51fa9f60f22cabfde4ccf14f76c4da793819 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 18 Jan 2019 15:15:11 +0100 Subject: [PATCH] almost all team functionality tested --- rowers/teams.py | 14 --- rowers/tests/test_teams.py | 132 ++++++++++++++++++++++++++ rowers/tests/testdata/testdata.csv.gz | Bin 11426 -> 11426 bytes rowers/tests/testdata/testdata.tcx | 2 +- rowers/urls.py | 4 +- 5 files changed, 135 insertions(+), 17 deletions(-) diff --git a/rowers/teams.py b/rowers/teams.py index d6179919..6bdbf566 100644 --- a/rowers/teams.py +++ b/rowers/teams.py @@ -133,25 +133,11 @@ def count_invites(manager): return count -def count_members(id): - t = Team.objects.get(id=id) - return Rower.objects.filter(team=t).count() def count_club_members(manager): ts = Team.objects.filter(manager=manager) return Rower.objects.filter(team__in=ts).distinct().count() -def get_club_members(manager): - ts = Team.objects.filter(manager=manager) - return Rower.objects.filter(team__in=ts).distinct() - -def get_team_members(id): - t = Team.objects.get(id=id) - return Rower.objects.filter(team=t) - -def get_team_workouts(id): - t = Team.objects.get(id=id) - return Workout.objects.filter(team=t).order_by("-date", "-starttime") # Medium level functionality diff --git a/rowers/tests/test_teams.py b/rowers/tests/test_teams.py index 51ac041f..3b7614e4 100644 --- a/rowers/tests/test_teams.py +++ b/rowers/tests/test_teams.py @@ -60,6 +60,8 @@ class TeamCreateTest(TestCase): self.t = TeamFactory(manager=self.u) + # need to set up some requests for testing (they are not good below) + def tearDown(self): for csvfilename in self.csvfilenames: try: @@ -67,6 +69,22 @@ class TeamCreateTest(TestCase): except (IOError, WindowsError): pass + def test_manager_drop_member(self): + res = add_member(self.t.id,self.users[1].rower) + login = self.c.login(username=self.u.username, password = self.password) + self.assertTrue(login) + + url = '/rowers/me/team/{t}/drop/{u}/'.format( + t = self.t.id, + u = self.users[1].id + ) + + response = self.c.get(url,follow=True) + self.assertEqual(response.status_code,200) + self.assertRedirects(response, + expected_url='/rowers/me/teams/'.format(t=self.t.id), + status_code=302,target_status_code=200) + def test_teamview(self): login = self.c.login(username=self.u.username, password = self.password) self.assertTrue(login) @@ -87,6 +105,117 @@ class TeamCreateTest(TestCase): response = self.c.get(url) self.assertEqual(response.status_code, 200) + def test_teamsview(self): + id, result = create_request(self.t,self.users[2].id) + id, comment = create_invite(self.t,self.u,user=self.users[1]) + + url = '/rowers/me/teams/' + + login = self.c.login(username=self.users[2].username, password = self.user_passwords[2]) + self.assertTrue(login) + + response = self.c.get(url,follow=True) + self.assertEqual(response.status_code,200) + + html = BeautifulSoup(response.content,'html.parser') + urls = [a['href'] for a in html.find_all('a')] + + for u in urls: + if 'rowers' in u and 'http' not in u and 'authorize' not in u and 'import' not in u and 'logout' not in u: + response = self.c.get(u) + if response.status_code not in [200,302]: + print url + print u + print response.status_code + self.assertIn(response.status_code,[200,302]) + + login = self.c.login(username=self.users[1].username, + password = self.user_passwords[1]) + self.assertTrue(login) + + response = self.c.get(url,follow=True) + self.assertEqual(response.status_code,200) + + html = BeautifulSoup(response.content,'html.parser') + urls = [a['href'] for a in html.find_all('a')] + + for u in urls: + if 'rowers' in u and 'http' not in u and 'authorize' not in u and 'import' not in u and 'logout' not in u: + response = self.c.get(u) + if response.status_code not in [200,302]: + print url + print u + print response.status_code + self.assertIn(response.status_code,[200,302]) + + def test_teamsview_manager(self): + id, result = create_request(self.t,self.users[2].id) + id, comment = create_invite(self.t,self.u,user=self.users[1]) + + url = '/rowers/me/teams/' + + login = self.c.login(username=self.u,password=self.password) + self.assertTrue(login) + + response = self.c.get(url,follow=True) + self.assertEqual(response.status_code,200) + + html = BeautifulSoup(response.content,'html.parser') + urls = [a['href'] for a in html.find_all('a')] + + for u in urls: + if 'rowers' in u and 'http' not in u and 'authorize' not in u and 'import' not in u and 'logout' not in u: + response = self.c.get(u) + if response.status_code not in [200,302]: + print url + print u + print response.status_code + self.assertIn(response.status_code,[200,302]) + + def test_teamview_member_request(self): + + login = self.c.login(username=self.users[1].username, password = self.user_passwords[1]) + self.assertTrue(login) + + url = '/rowers/team/{t}/requestmembership/{u}/'.format( + t=self.t.id, + u=self.users[1].id) + + response = self.c.get(url,follow=True) + self.assertEqual(response.status_code, 200) + + self.assertRedirects(response, + expected_url='/rowers/team/{t}/'.format(t=self.t.id), + status_code=302,target_status_code=200) + + id, result = create_request(self.t,self.users[2].id) + self.assertTrue(id != 0) + + login = self.c.login(username=self.users[2].username, password = self.user_passwords[2]) + self.assertTrue(login) + + url = '/rowers/me/invitation/{id}/revoke/'.format(id=id) + self.assertRedirects(response, + expected_url='/rowers/team/{t}/'.format(t=self.t.id), + status_code=302,target_status_code=200) + + response = self.c.get(url,follow=True) + self.assertEqual(response.status_code,200) + + id, result = create_request(self.t,self.users[2].id) + self.assertTrue(id != 0) + + login = self.c.login(username=self.u.username, password = self.password) + self.assertTrue(login) + + url = '/rowers/me/invitation/{id}/reject/'.format(id=id) + response = self.c.get(url,follow=True) + self.assertEqual(response.status_code,200) + self.assertRedirects(response, + expected_url='/rowers/me/teams/', + status_code=302,target_status_code=200) + + def test_team_invite_view(self): login = self.c.login(username=self.u.username, password = self.password) self.assertTrue(login) @@ -135,6 +264,9 @@ class TeamCreateTest(TestCase): test = Team.objects.filter(id=tid) self.assertEqual(len(test),0) + def test_lowlevel_create_request(self): + id,comment = create_request(self.t,self.users[1].id) + self.assertEqual(id,1) def test_lowlevel_remove_member(self): id, comment = add_member(self.t.id, self.users[3].rower) diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index dbfd9aafc2a2b21f9469cd525f2d1dec96fcf250..4c9f0258d4ec339d632a9999ff90cd3b94476907 100644 GIT binary patch delta 15 WcmZ1!xhRrNzMF%C=iWxPIXVC;d<7r? delta 15 WcmZ1!xhRrNzMF%i^w37OIXVC=W(92k diff --git a/rowers/tests/testdata/testdata.tcx b/rowers/tests/testdata/testdata.tcx index ce2c78f0..77e29c4f 100644 --- a/rowers/tests/testdata/testdata.tcx +++ b/rowers/tests/testdata/testdata.tcx @@ -2502,7 +2502,7 @@ - <Element 'Notes' at 0x138f7dd8> + <Element 'Notes' at 0x19d5f2b0> diff --git a/rowers/urls.py b/rowers/urls.py index 3e070748..ef652679 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -397,8 +397,8 @@ urlpatterns = [ url(r'^me/invitation/$',views.rower_invitations_view), url(r'^me/raise500/$',views.raise_500), url(r'^me/invitation/(\w+.*)/$',views.rower_invitations_view), - url(r'^me/request/(?P\d+)/revoke',views.request_revoke_view), - url(r'^me/request/(?P\d+)/reject',views.request_reject_view), + url(r'^me/request/(?P\d+)/revoke/$',views.request_revoke_view), + url(r'^me/request/(?P\d+)/reject/$',views.request_reject_view), url(r'^me/request/(\w+.*)/$',views.manager_requests_view), url(r'^me/request/$',views.manager_requests_view), url(r'^me/edit/$',views.rower_edit_view),