修改之前的测试,以及增加查询、删除小组成员、用户要加入某个小组和搜索小组时的测试
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
194
group/tests.py
194
group/tests.py
@@ -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)
|
||||||
|
|||||||
@@ -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"),
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user