修改之前的测试,以及增加查询、删除小组成员、用户要加入某个小组和搜索小组时的测试

This commit is contained in:
hohoTT
2015-08-11 14:50:33 +08:00
parent c8388c8a8f
commit 5063d1c7a2
3 changed files with 161 additions and 42 deletions

View File

@@ -5,7 +5,7 @@ from account.models import User
class Group(models.Model): class Group(models.Model):
name = models.CharField(max_length=30) name = models.CharField(max_length=30, unique=True)
description = models.TextField() description = models.TextField()
create_time = models.DateTimeField(auto_now_add=True) create_time = models.DateTimeField(auto_now_add=True)
admin = models.ForeignKey(User, related_name="my_groups") admin = models.ForeignKey(User, related_name="my_groups")
@@ -26,10 +26,11 @@ class UserGroupRelation(models.Model):
class Meta: class Meta:
db_table = "user_group_relation" db_table = "user_group_relation"
unique_together = ("group", "user")
class JoinGroupRequest(models.Model): class JoinGroupRequest(models.Model):
group = models.ForeignKey(User) group = models.ForeignKey(Group)
user = models.ForeignKey(User, related_name="my_join_group_requests") user = models.ForeignKey(User, related_name="my_join_group_requests")
message = models.TextField() message = models.TextField()
create_time = models.DateTimeField(auto_now_add=True) create_time = models.DateTimeField(auto_now_add=True)

View File

@@ -1,85 +1,201 @@
# coding=utf-8 # coding=utf-8
from django.test import TestCase import json
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from rest_framework.test import APITestCase, APIClient from rest_framework.test import APITestCase, APIClient
from account.models import User, SUPER_ADMIN from account.models import User, REGULAR_USER, ADMIN, SUPER_ADMIN
from group.models import Group from group.models import Group, UserGroupRelation, JoinGroupRequest
class GroupAPITest(APITestCase):
pass
class GroupAdminAPITest(APITestCase): class GroupAdminAPITest(APITestCase):
# 以下是创建小组的测试 def _create_group(self, name, join_group_setting):
group = Group.objects.create(name=name, description="des0",
join_group_setting=join_group_setting, visible=True,
admin=self.user)
return group
def setUp(self): def setUp(self):
self.client = APIClient() self.client = APIClient()
self.url = reverse('group_admin_api') self.url = reverse('group_admin_api')
user = User.objects.create(username="test", admin_type=SUPER_ADMIN) self.user = User.objects.create(username="test", admin_type=SUPER_ADMIN)
user.set_password("testaa") self.user.set_password("testaa")
user.save() self.user.save()
self.group = self._create_group("group1", 0)
def test_invalid_format(self):
self.client.login(username="test", password="testaa") self.client.login(username="test", password="testaa")
# 以下是创建小组的测试
def test_invalid_format(self):
data = {"name": "group1"} data = {"name": "group1"}
response = self.client.post(self.url, data=data) response = self.client.post(self.url, data=data)
self.assertEqual(response.data["code"], 1) self.assertEqual(response.data["code"], 1)
def test_success_group(self): def test_create_group_successfully(self):
self.client.login(username="test", password="testaa") data = {"name": "group0", "description": "des0", "join_group_setting": "1"}
data = {"name": "group1", "description": "des1", "join_group_setting": "1"}
response = self.client.post(self.url, data=data) response = self.client.post(self.url, data=data)
self.assertEqual(response.data["code"], 0) self.assertEqual(response.data["code"], 0)
def test_group_already_exists(self):
data = {"name": "group1", "description": "des0", "join_group_setting": "1"}
response = self.client.post(self.url, data=data)
self.assertEqual(response.data, {"code": 1, "data": u"小组名已经存在"})
# 以下是修改小组的测试 # 以下是修改小组的测试
def test_put_invalid_data(self): def test_put_invalid_data(self):
self.client.login(username="test", password="testaa")
data = {"name": "group1"} data = {"name": "group1"}
response = self.client.put(self.url, data=data) response = self.client.put(self.url, data=data)
self.assertEqual(response.data["code"], 1) self.assertEqual(response.data["code"], 1)
def test_edit_group_does_not_exist(self): def test_edit_group_does_not_exist(self):
self.client.login(username="test", password="testaa") data = {"group_id": self.group.id + 1, "name": "group0", "description": "des0",
group = Group.objects.create(name="group1", description="des1",
join_group_setting="1", visible="True",
admin=User.objects.get(username="test"))
data = {"group_id": group.id + 1, "name": "group0", "description": "des0",
"join_group_setting": 2} "join_group_setting": 2}
response = self.client.put(self.url, data=data) response = self.client.put(self.url, data=data)
self.assertEqual(response.data, {"code": 1, "data": u"小组不存在"}) self.assertEqual(response.data, {"code": 1, "data": u"小组不存在"})
def test_success_edit_group(self): def test_edit_group_successfully(self):
self.client.login(username="test", password="testaa") data = {"group_id": self.group.id, "name": "group0", "description": "des0",
group = Group.objects.create(name="group1", description="des1",
join_group_setting="1", visible="True",
admin=User.objects.get(username="test"))
data = {"group_id": group.id, "name": "group0", "description": "des0",
"join_group_setting": 2} "join_group_setting": 2}
response = self.client.put(self.url, data=data) response = self.client.put(self.url, data=data)
self.assertEqual(response.data["code"], 0) self.assertEqual(response.data["code"], 0)
self.assertEqual(response.data["data"]["name"], "group0")
self.assertEqual(response.data["data"]["join_group_setting"], 2)
def test_edit_group_exists(self):
group = self._create_group("group2", 1)
data = {"group_id": group.id, "name": "group1", "description": "des0",
"join_group_setting": 0}
response = self.client.put(self.url, data=data)
self.assertEqual(response.data, {"code": 1, "data": u"小组名已经存在"})
# 以下是查询小组列表或者是单个小组时的测试 # 以下是查询小组列表或者是单个小组时的测试
def test_select_group_does_not_exist(self): def test_select_group_does_not_exist(self):
self.client.login(username="test", password="testaa") data = {"group_id": self.group.id + 1}
group = Group.objects.create(name="group1", description="des1",
join_group_setting="1", visible="True",
admin=User.objects.get(username="test"))
data = {"group_id": group.id + 1, "name": "group0", "description": "des0",
"join_group_setting": 2}
response = self.client.get(self.url, data=data) response = self.client.get(self.url, data=data)
self.assertEqual(response.data, {"code": 1, "data": u"小组不存在"}) self.assertEqual(response.data, {"code": 1, "data": u"小组不存在"})
def test_success_select_group(self): def test_select_group_successfully(self):
self.client.login(username="test", password="testaa") data = {"group_id": self.group.id}
group = Group.objects.create(name="group1", description="des1",
join_group_setting="1", visible="True",
admin=User.objects.get(username="test"))
data = {"group_id": group.id, "name": "group0", "description": "des0",
"join_group_setting": 2}
response = self.client.get(self.url, data=data) response = self.client.get(self.url, data=data)
self.assertEqual(response.data["code"], 0) self.assertEqual(response.data["code"], 0)
def test_success_get_data(self): def test_success_get_all_groups(self):
self.client.login(username="test", password="testaa")
self.assertEqual(self.client.get(self.url).data["code"], 0) self.assertEqual(self.client.get(self.url).data["code"], 0)
class GroupMemberAdminAPITest(APITestCase):
def setUp(self):
self.client = APIClient()
self.url = reverse('group_member_admin_api')
self.user = User.objects.create(username="test", admin_type=SUPER_ADMIN)
self.user.set_password("testaa")
self.user.save()
self.user1 = User.objects.create(username="member1", admin_type=REGULAR_USER)
self.user1.set_password("testxx")
self.user1.save()
self.client.login(username="test", password="testaa")
self.group = Group.objects.create(name="group1", description="des1",
join_group_setting="1", visible="True",
admin=self.user)
UserGroupRelation.objects.create(group=self.group, user=self.user1)
# 以下是查询小组成员的测试
def test_missing_parameter(self):
self.assertEqual(self.client.get(self.url).data, {"code": 1, "data": u"参数错误"})
def test_group_does_not_exist(self):
data = {"group_id": self.group.id + 1}
response = self.client.get(self.url, data=data)
self.assertEqual(response.data, {"code": 1, "data": u"小组不存在"})
def test_get_member_list_successfully(self):
data = {"group_id": self.group.id}
response = self.client.get(self.url, data=data)
self.assertEqual(response.data["code"], 0)
# 以下是删除小组成员的测试
def test_invalid_format(self):
data = {"members": [self.user1.id]}
response = self.client.put(self.url, data=json.dumps(data), content_type="application/json")
self.assertEqual(response.data["code"], 1)
def test_del_group_does_not_exist(self):
data = {"group_id": self.group.id + 1, "members": [self.user1.id]}
response = self.client.put(self.url, data=json.dumps(data), content_type="application/json")
self.assertEqual(response.data, {"code": 1, "data": u"小组不存在"})
def test_success_del_members(self):
data = {"group_id": self.group.id, "members": [self.user1.id]}
response = self.client.put(self.url, data=json.dumps(data), content_type="application/json")
self.assertEqual(response.data, {"code": 0, "data": u"删除成功"})
try:
UserGroupRelation.objects.get(group=self.group, user=self.user1)
raise AssertionError()
except UserGroupRelation.DoesNotExist:
pass
class JoinGroupAPITest(APITestCase):
def _create_group(self, name, join_group_setting):
group = Group.objects.create(name=name, description="des0",
join_group_setting=join_group_setting, visible="True",
admin=self.user)
return group
def setUp(self):
self.client = APIClient()
self.url = reverse('group_join_admin_api')
self.user = User.objects.create(username="test", admin_type=SUPER_ADMIN)
self.user.set_password("testaa")
self.user.save()
self.client.login(username="test", password="testaa")
self.group = self._create_group("group0", 0)
# 以下是用户要加入某个小组的测试
def test_invalid_format(self):
data = {"message": "message1"}
response = self.client.post(self.url, data=data)
self.assertEqual(response.data["code"], 1)
def test_group_does_not_exist(self):
data = {"group_id": self.group.id + 1, "message": "message1"}
response = self.client.post(self.url, data=data)
self.assertEqual(response.data, {"code": 1, "data": u"小组不存在"})
def test_join0(self):
data = {"group_id": self.group.id, "message": "message0"}
response = self.client.post(self.url, data=data)
self.assertEqual(response.data, {"code": 0, "data": u"你已经成功的加入该小组"})
# 再加入一遍 已经是小组成员了
data = {"group_id": self.group.id, "message": "message0"}
response = self.client.post(self.url, data=data)
self.assertEqual(response.data, {"code": 1, "data": u"你已经是小组成员了"})
def test_success_join1(self):
group = self._create_group("group1", 1)
data = {"group_id": group.id, "message": "message1"}
response = self.client.post(self.url, data=data)
self.assertEqual(response.data, {"code": 0, "data": u"申请提交成功,请等待审核"})
try:
JoinGroupRequest.objects.get(user=self.user, group=group, status=False)
except JoinGroupRequest.DoesNotExist:
raise AssertionError()
def test_success_join2(self):
group = self._create_group("group2", 2)
data = {"group_id": group.id, "message": "message2"}
response = self.client.post(self.url, data=data)
self.assertEqual(response.data, {"code": 1, "data": u"该小组不允许任何人加入"})
# 以下是搜索小组的测试
def test_error_get_data(self):
self.assertEqual(self.client.get(self.url).data["code"], 1)
def test_query_by_keyword(self):
response = self.client.get(self.url + "?keyword=group0")
self.assertEqual(response.data["code"], 0)

View File

@@ -7,7 +7,7 @@ from account.views import (UserLoginAPIView, UsernameCheckAPIView, UserRegisterA
UserChangePasswordAPIView, EmailCheckAPIView, UserChangePasswordAPIView, EmailCheckAPIView,
UserAPIView, UserAdminAPIView) UserAPIView, UserAdminAPIView)
from announcement.views import AnnouncementAPIView, AnnouncementAdminAPIView from announcement.views import AnnouncementAPIView, AnnouncementAdminAPIView
from group.views import GroupAdminAPIView from group.views import GroupAdminAPIView, GroupMemberAdminAPIView, JoinGroupAPIView
from admin.views import AdminTemplateView from admin.views import AdminTemplateView
from problem.views import ProblemAdminAPIView from problem.views import ProblemAdminAPIView
@@ -39,6 +39,8 @@ urlpatterns = [
url(r'^problems/$', TemplateView.as_view(template_name="oj/problem/problem_list.html"), name="problem_list_page"), url(r'^problems/$', TemplateView.as_view(template_name="oj/problem/problem_list.html"), name="problem_list_page"),
url(r'^admin/template/(?P<template_dir>\w+)/(?P<template_name>\w+).html', AdminTemplateView.as_view(), name="admin_template"), url(r'^admin/template/(?P<template_dir>\w+)/(?P<template_name>\w+).html', AdminTemplateView.as_view(), name="admin_template"),
url(r'^api/admin/group/$', GroupAdminAPIView.as_view(), name="group_admin_api"), url(r'^api/admin/group/$', GroupAdminAPIView.as_view(), name="group_admin_api"),
url(r'^api/admin/group_member/$', GroupMemberAdminAPIView.as_view(), name="group_member_admin_api"),
url(r'^api/admin/group_join/$', JoinGroupAPIView.as_view(), name="group_join_admin_api"),
url(r'^api/admin/problem/$', ProblemAdminAPIView.as_view(), name="problem_admin_api"), url(r'^api/admin/problem/$', ProblemAdminAPIView.as_view(), name="problem_admin_api"),
url(r'^api/admin/test_case_upload/$', TestCaseUploadAPIView.as_view(), name="test_case_upload_api"), url(r'^api/admin/test_case_upload/$', TestCaseUploadAPIView.as_view(), name="test_case_upload_api"),
] ]