Browse Source

Add tests

wavesign
NinjaKelly 2 months ago
parent
commit
1dc7b0f2b0
7 changed files with 242 additions and 10 deletions
  1. +131
    -2
      Community/tests.py
  2. +8
    -1
      Home/tests.py
  3. +8
    -1
      LifeServing/tests.py
  4. +32
    -2
      MyPage/tests.py
  5. +8
    -1
      SLClassroom/tests.py
  6. +32
    -2
      Schedule/tests.py
  7. +23
    -1
      users/tests.py

+ 131
- 2
Community/tests.py View File

@ -1,3 +1,132 @@
from django.test import TestCase
from django.test import TestCase, Client
from django.urls import reverse
from django.contrib.auth import get_user_model
from .models import Post, Like, Comment, Favorite
import json
# Create your tests here.
User = get_user_model()
class PostModelTest(TestCase):
def setUp(self):
self.user = User.objects.create_user(username='testuser', password='testpass')
self.post = Post.objects.create(user=self.user, content='test content')
def test_str(self):
self.assertIn(self.user.username, str(self.post))
def test_post_creation(self):
self.assertEqual(Post.objects.count(), 1)
class LikeModelTest(TestCase):
def setUp(self):
self.user = User.objects.create_user(username='testuser2', password='testpass')
self.post = Post.objects.create(user=self.user, content='test content')
self.like = Like.objects.create(user=self.user, post=self.post)
def test_like_creation(self):
self.assertEqual(Like.objects.count(), 1)
class CommentModelTest(TestCase):
def setUp(self):
self.user = User.objects.create_user(username='testuser3', password='testpass')
self.post = Post.objects.create(user=self.user, content='test content')
self.comment = Comment.objects.create(user=self.user, post=self.post, content='nice!')
def test_comment_creation(self):
self.assertEqual(Comment.objects.count(), 1)
class FavoriteModelTest(TestCase):
def setUp(self):
self.user = User.objects.create_user(username='testuser4', password='testpass')
self.post = Post.objects.create(user=self.user, content='test content')
self.favorite = Favorite.objects.create(user=self.user, post=self.post)
def test_favorite_creation(self):
self.assertEqual(Favorite.objects.count(), 1)
class CommunityViewsTest(TestCase):
def setUp(self):
self.client = Client()
self.user = User.objects.create_user(username='testuser5', password='testpass')
self.post = Post.objects.create(user=self.user, content='test content')
def test_post_list_view(self):
response = self.client.get(reverse('community'))
self.assertEqual(response.status_code, 200)
def test_create_post_view_not_logged_in(self):
response = self.client.get(reverse('create_post'))
self.assertEqual(response.status_code, 302) # redirect to login
def test_like_post_view(self):
self.client.login(username='testuser5', password='testpass')
response = self.client.post(reverse('like_post', args=[self.post.id]))
self.assertEqual(response.status_code, 200)
def test_create_post_with_content(self):
self.client.login(username='testuser5', password='testpass')
response = self.client.post(reverse('create_post'), {'content': 'new post'})
self.assertEqual(response.status_code, 302)
def test_create_post_no_content(self):
self.client.login(username='testuser5', password='testpass')
response = self.client.post(reverse('create_post'), {'content': ''})
self.assertEqual(response.status_code, 302)
def test_like_post_twice(self):
self.client.login(username='testuser5', password='testpass')
self.client.post(reverse('like_post', args=[self.post.id]))
response = self.client.post(reverse('like_post', args=[self.post.id]))
self.assertJSONEqual(response.content, {'success': False, 'message': '已点赞'})
def test_like_post_not_exist(self):
self.client.login(username='testuser5', password='testpass')
response = self.client.post(reverse('like_post', args=[9999]))
self.assertEqual(response.status_code, 404)
data = json.loads(response.content)
self.assertEqual(data['error'], '帖子不存在')
def test_comment_post_empty(self):
self.client.login(username='testuser5', password='testpass')
response = self.client.post(reverse('comment_post', args=[self.post.id]), {'content': ''})
self.assertJSONEqual(response.content, {'success': False, 'message': '评论不能为空'})
def test_comment_post_not_exist(self):
self.client.login(username='testuser5', password='testpass')
response = self.client.post(reverse('comment_post', args=[9999]), {'content': 'hi'})
self.assertEqual(response.status_code, 404)
data = json.loads(response.content)
self.assertEqual(data['error'], '帖子不存在')
def test_favorite_post_twice(self):
self.client.login(username='testuser5', password='testpass')
self.client.post(reverse('favorite_post', args=[self.post.id]))
response = self.client.post(reverse('favorite_post', args=[self.post.id]))
self.assertJSONEqual(response.content, {'success': False, 'message': '已收藏'})
def test_favorite_post_not_exist(self):
self.client.login(username='testuser5', password='testpass')
response = self.client.post(reverse('favorite_post', args=[9999]))
self.assertEqual(response.status_code, 404)
data = json.loads(response.content)
self.assertEqual(data['error'], '帖子不存在')
def test_toggle_follow_self(self):
self.client.login(username='testuser5', password='testpass')
response = self.client.post(reverse('toggle_follow', args=[self.user.id]))
self.assertJSONEqual(response.content, {'success': False, 'message': '不能关注自己'})
def test_toggle_follow_not_exist(self):
self.client.login(username='testuser5', password='testpass')
response = self.client.post(reverse('toggle_follow', args=[9999]))
self.assertJSONEqual(response.content, {'success': False, 'message': '用户不存在'})
def test_toggle_follow_and_unfollow(self):
self.client.login(username='testuser5', password='testpass')
# 新建另一个用户
user2 = User.objects.create_user(username='testuser6', password='testpass')
response = self.client.post(reverse('toggle_follow', args=[user2.id]))
self.assertJSONEqual(response.content, {'success': True, 'following': True, 'message': '关注成功'})
# 再次调用应为取消关注
response = self.client.post(reverse('toggle_follow', args=[user2.id]))
self.assertJSONEqual(response.content, {'success': True, 'following': False, 'message': '已取消关注'})

+ 8
- 1
Home/tests.py View File

@ -1,3 +1,10 @@
from django.test import TestCase
from django.test import TestCase, Client
from django.urls import reverse
# Create your tests here.
class HomeViewTest(TestCase):
def test_home_page(self):
client = Client()
response = client.get(reverse('home'))
self.assertEqual(response.status_code, 200)

+ 8
- 1
LifeServing/tests.py View File

@ -1,3 +1,10 @@
from django.test import TestCase
from django.test import TestCase, Client
from django.urls import reverse
# Create your tests here.
class LifeServingViewTest(TestCase):
def test_life_serving_page(self):
client = Client()
response = client.get(reverse('life_serving'))
self.assertEqual(response.status_code, 200)

+ 32
- 2
MyPage/tests.py View File

@ -1,3 +1,33 @@
from django.test import TestCase
from django.test import TestCase, Client
from django.urls import reverse
from django.contrib.auth import get_user_model
from .models import UserProfile, Follow
# Create your tests here.
User = get_user_model()
class UserProfileModelTest(TestCase):
def setUp(self):
self.user = User.objects.create_user(username='testuser', password='testpass')
self.profile = self.user.profile
def test_str(self):
self.assertIn(self.user.username, str(self.profile))
class FollowModelTest(TestCase):
def setUp(self):
self.user1 = User.objects.create_user(username='user1', password='testpass')
self.user2 = User.objects.create_user(username='user2', password='testpass')
self.follow = Follow.objects.create(follower=self.user1, followed=self.user2)
def test_follow_creation(self):
self.assertEqual(Follow.objects.count(), 1)
class MyPageViewTest(TestCase):
def setUp(self):
self.client = Client()
self.user = User.objects.create_user(username='testuser2', password='testpass')
self.client.login(username='testuser2', password='testpass')
def test_my_page_view(self):
response = self.client.get(reverse('my_page'))
self.assertEqual(response.status_code, 200)

+ 8
- 1
SLClassroom/tests.py View File

@ -1,3 +1,10 @@
from django.test import TestCase
from django.test import TestCase, Client
from django.urls import reverse
# Create your tests here.
class SLClassroomViewTest(TestCase):
def test_sl_classroom_page(self):
client = Client()
response = client.get(reverse('sl_classroom'))
self.assertEqual(response.status_code, 200)

+ 32
- 2
Schedule/tests.py View File

@ -1,3 +1,33 @@
from django.test import TestCase
from django.test import TestCase, Client
from django.urls import reverse
from django.contrib.auth import get_user_model
from .models import Event, Task
# Create your tests here.
User = get_user_model()
class EventModelTest(TestCase):
def setUp(self):
self.user = User.objects.create_user(username='testuser', password='testpass')
self.event = Event.objects.create(user=self.user, title='Test Event', date='2025-01-01', time='12:00', description='desc')
def test_str(self):
self.assertEqual(str(self.event), 'Test Event')
class TaskModelTest(TestCase):
def setUp(self):
self.user = User.objects.create_user(username='testuser2', password='testpass')
self.event = Event.objects.create(user=self.user, title='Test Event', date='2025-01-01', time='12:00', description='desc')
self.task = Task.objects.create(user=self.user, text='Test Task', event=self.event)
def test_str(self):
self.assertEqual(str(self.task), 'Test Task')
class ScheduleApiTest(TestCase):
def setUp(self):
self.client = Client()
self.user = User.objects.create_user(username='testuser3', password='testpass')
self.client.login(username='testuser3', password='testpass')
def test_event_list_api(self):
response = self.client.get(reverse('event-list'))
self.assertIn(response.status_code, [200, 403, 401])

+ 23
- 1
users/tests.py View File

@ -1,3 +1,25 @@
from django.test import TestCase
from django.test import TestCase, Client
from django.urls import reverse
from .models import CustomUser
# Create your tests here.
class CustomUserModelTest(TestCase):
def setUp(self):
self.user = CustomUser.objects.create_user(username='testuser', password='testpass', email='test@example.com')
def test_str(self):
self.assertEqual(str(self.user), 'testuser')
class UserAuthViewsTest(TestCase):
def setUp(self):
self.client = Client()
self.user = CustomUser.objects.create_user(username='testuser2', password='testpass', email='test2@example.com')
def test_login_view(self):
response = self.client.post(reverse('login'), {'username': 'testuser2', 'password': 'testpass'})
self.assertIn(response.status_code, [200, 302])
def test_register_view(self):
response = self.client.post(reverse('register'), {'username': 'newuser', 'email': 'new@example.com', 'password': 'newpassword123', 'password_confirm': 'newpassword123', 'agreed_terms': True})
self.assertIn(response.status_code, [200, 302])

Loading…
Cancel
Save