def test_post_list(self): request = factory.post('/api/teams/', data={ 'name': 'Frogz', 'username': '******' }) force_authenticate(request, user=self.admin_user) view = TeamViewSet.as_view({'post': 'create'}) response = view(request) response.render() team = Team.objects.filter(name='Frogz') self.assertEqual(team.count(), 1, 'Expected team to be created') member = Member.objects.filter(player=self.admin_user, team=team, username='******') self.assertEqual(member.count(), 1, 'Expected member to be created') expected_data = { 'id': team[0].id, 'name': team[0].name, 'member_id': member[0].id } self.assertEqual(response.status_code, status.HTTP_201_CREATED, 'expected HTTP 201 - Created') self.assertTrue(expected_data.items() <= response.data.items(), 'Expected appropriate data scheme to be in response')
def test_request_with_missing_email(self): request = factory.post(self.url) force_authenticate(request, user=self.member_player) view = TeamViewSet.as_view({'post': 'invite'}) response = view(request, pk=self.dev_team.pk) response.render() self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST, 'expected HTTP 400 on no email')
def view_group3(request): ''' 爱心团体 ''' if request.method == 'POST': return redirect(reverse('registration:page_index')) obj = TeamViewSet.as_view({'get': 'list'}, app_name='api')(request) context = get_context(obj) return render(request, 'pages/group3.html', context)
def test_request_by_non_member(self): # TODO Enable the test - migrate to APIClient from APIRequestFactory # permission_classes are ignored for @detail_route when using APIRequestFactory request = factory.post(self.url) force_authenticate(request, user=self.non_member_player) view = TeamViewSet.as_view({'post': 'invite'}) response = view(request, pk=self.dev_team.pk) response.render() self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN, 'expected HTTP 403 when non member sends invitation')
def test_join_team(self): is_member_before = self.dummy_user.member_set.filter(id=self.dev_team.id).count() self.assertEqual(is_member_before, 0) request = factory.post('/api/teams/join/', data={'username': '******', 'team': self.dev_team.name}) force_authenticate(request, user=self.dummy_user) view = TeamViewSet.as_view({'post': 'join'}) response = view(request) response.render() self.assertEqual(response.status_code, status.HTTP_201_CREATED, 'expected HTTP 201 - Created') is_member_after = Member.objects.filter(player=self.dummy_user, team=self.dev_team).count() self.assertEqual(is_member_after, 1, 'expected correct number of teams')
def test_get_item(self): request = factory.get('/api/teams/{0}/'.format(self.dev_team.id)) force_authenticate(request, user=self.admin_user) view = TeamViewSet.as_view({'get': 'retrieve'}) response = view(request, pk=str(self.dev_team.id)) response.render() expected_data = model_to_dict(self.dev_team, fields=self.fields) self.assertEqual(response.status_code, status.HTTP_200_OK, 'expected HTTP 200') self.assertDictEqual(response.data, expected_data, 'expected dev team data')
def test_get_list(self): request = factory.get('/api/teams/') force_authenticate(request, user=self.admin_user) view = TeamViewSet.as_view({'get': 'list'}) response = view(request) response.render() response_data = json.loads(str(response.content, encoding='utf8')) self.assertEqual(response.status_code, status.HTTP_200_OK, 'expected HTTP 200') self.assertEqual(len(response_data), Team.objects.count(), 'expected correct number of teams')
def test_invite_already_existing_member(self): email = '*****@*****.**' request = factory.post(self.url, data={ 'email': email, 'username': '******' }) force_authenticate(request, user=self.member_player) view = TeamViewSet.as_view({'post': 'invite'}) response = view(request, pk=self.dev_team.pk) response.render() self.assertEqual(response.status_code, status.HTTP_409_CONFLICT, 'expected HTTP 409 when inviting existing member')
def test_teams_get(self): self._team_create() view = TeamViewSet.as_view({'get': 'retrieve'}) request = self.factory.get('/', **self.extra) response = view(request) self.assertEqual(response.status_code, 400) self.assertEqual( response.data, {'detail': 'Expected URL keyword argument `owner` and `pk`.'}) request = self.factory.get('/', **self.extra) response = view(request, owner='denoinc', pk=self.team.pk) self.assertEqual(response.status_code, 200) self.assertEqual(response.data, self.team_data)
def test_teams_get(self): self._team_create() view = TeamViewSet.as_view({ 'get': 'retrieve' }) request = self.factory.get('/', **self.extra) response = view(request) self.assertEqual(response.status_code, 400) self.assertEqual(response.data, {'detail': 'Expected URL keyword argument `owner` and `pk`.'}) request = self.factory.get('/', **self.extra) response = view(request, owner='denoinc', pk=self.team.pk) self.assertEqual(response.status_code, 200) self.assertEqual(response.data, self.team_data)
def test_get_joined_teams(self): teams = Team.objects.filter(member__player__id=self.admin_user.id, member__is_accepted=True) pending = Team.objects.filter(member__player__id=self.admin_user.id, member__is_accepted=False).count() teams = teams.annotate(username=F('member__username'), member_id=F('member__id')) expected_data = [ {'id': team.id, 'name': team.name, 'username': team.username, 'member_id': team.member_id} for team in teams ] request = factory.get('/api/teams/joined/') force_authenticate(request, user=self.admin_user) view = TeamViewSet.as_view({'get': 'joined'}) response = view(request) response.render() response_data = json.loads(str(response.content, encoding='utf8')) self.assertEqual(response.status_code, status.HTTP_200_OK, 'expected HTTP 200') self.assertEqual(response_data['teams'], expected_data, 'expected list of joined teams') self.assertEqual(response_data['pending'], pending, 'expected correct number of pending teams')
def test_invite_existing_player(self): email = self.non_member_player.email username = '******' request = factory.post(self.url, data={ 'email': email, 'username': username }) force_authenticate(request, user=self.member_player) view = TeamViewSet.as_view({'post': 'invite'}) response = view(request, pk=self.dev_team.pk) response.render() member = Member.objects.filter(team=self.dev_team, username=username) self.assertEqual(member.count(), 1, 'Member should have been created') self.assertEqual(member[0].player.id, self.non_member_player.id, 'Member should have player assigned') self.assertNotEqual(member[0].activation_code, '', 'Activation code should be set') self.assertEqual(response.status_code, status.HTTP_201_CREATED, 'expected HTTP 201 - Created')
def test_invite_not_existing_player(self): email = '*****@*****.**' username = '******' request = factory.post(self.url, data={ 'email': email, 'username': username }) force_authenticate(request, user=self.member_player) view = TeamViewSet.as_view({'post': 'invite'}) response = view(request, pk=self.dev_team.pk) response.render() member = Member.objects.filter(team=self.dev_team, username=username) placeholder = PlayerPlaceholder.objects.filter(member=member, email=email) self.assertEqual(member.count(), 1, 'Member should have been created') self.assertTrue(placeholder.exists(), 'Player placeholder should have been created') self.assertNotEqual(member[0].activation_code, '', 'Activation code should be set') self.assertEqual(response.status_code, status.HTTP_201_CREATED, 'expected HTTP 201 - Created')
# MENTORS url(r'^hackathons/(?P<fk>\d+)/mentors/$', MentorViewSet.as_view({'post': 'create'})), url( r'^mentors/(?P<pk>\d+)/$', MentorViewSet.as_view({ 'get': 'retrieve', 'put': 'update', 'patch': 'partial_update', 'delete': 'destroy' })), url(r'^mentors/$', MentorViewSet.as_view({'get': 'list'})), # TEAMS url(r'^hackathons/(?P<fk>\d+)/teams/$', TeamViewSet.as_view({'post': 'create'})), url( r'^teams/(?P<pk>\d+)/$', TeamViewSet.as_view({ 'get': 'retrieve', 'put': 'update', 'patch': 'partial_update', 'delete': 'destroy' })), url(r'^teams/$', TeamViewSet.as_view({'get': 'list'})), # Add Hackers to Teams url(r'^hackathons/(?P<fk2>\d+)/teams/(?P<fk>\d+)/hackers/(?P<pk>\d+)/$', TeamHackerAddRemove.as_view()), # EVENTS url(r'^hackathons/(?P<fk>\d+)/events/$',
def setUp(self): super(TestTeamsAPI, self).setUp() self.view = TeamViewSet.as_view({ 'get': 'list', 'post': 'create' })
user_detail = UserViewSet.as_view({'get': 'retrieve'}) organization_list = OrganizationViewSet.as_view({ 'get': 'list', 'post': 'create' }) organization_detail = OrganizationViewSet.as_view({ 'get': 'retrieve', 'put': 'update', 'patch': 'partial_update', 'delete': 'destroy' }) team_list = TeamViewSet.as_view({'get': 'list', 'post': 'create'}) team_detail = TeamViewSet.as_view({ 'get': 'retrieve', 'put': 'update', 'patch': 'partial_update', 'delete': 'destroy' }) router = DefaultRouter() router.register(r'users', UserViewSet) router.register(r'organizations', OrganizationViewSet) router.register(r'teams', TeamViewSet) urlpatterns = patterns( '',
def setUp(self): super(TestTeamsAPI, self).setUp() self.view = TeamViewSet.as_view({'get': 'list', 'post': 'create'})
}) organization_list = OrganizationViewSet.as_view({ 'get': 'list', 'post': 'create' }) organization_detail = OrganizationViewSet.as_view({ 'get': 'retrieve', 'put': 'update', 'patch': 'partial_update', 'delete': 'destroy' }) team_list = TeamViewSet.as_view({ 'get': 'list', 'post': 'create' }) team_detail = TeamViewSet.as_view({ 'get': 'retrieve', 'put': 'update', 'patch': 'partial_update', 'delete': 'destroy' }) router = DefaultRouter() router.register(r'users', UserViewSet) router.register(r'organizations', OrganizationViewSet) router.register(r'teams', TeamViewSet) urlpatterns = patterns('',