Browse Source

test coverage 93%

wavesign
NinjaKelly 2 months ago
parent
commit
71f34b9647
4 changed files with 144 additions and 0 deletions
  1. +83
    -0
      MyPage/tests.py
  2. +1
    -0
      MyPage/views.py
  3. +32
    -0
      Schedule/tests.py
  4. +28
    -0
      users/tests.py

+ 83
- 0
MyPage/tests.py View File

@ -2,6 +2,8 @@ from django.test import TestCase, Client
from django.urls import reverse
from django.contrib.auth import get_user_model
from .models import UserProfile, Follow
from django.core.files.uploadedfile import SimpleUploadedFile
import json
User = get_user_model()
@ -31,3 +33,84 @@ class MyPageViewTest(TestCase):
def test_my_page_view(self):
response = self.client.get(reverse('my_page'))
self.assertEqual(response.status_code, 200)
class MyPageViewsTest(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_my_page_view_logged_in(self):
response = self.client.get(reverse('my_page'))
self.assertEqual(response.status_code, 200)
def test_my_page_view_not_logged_in(self):
self.client.logout()
response = self.client.get(reverse('my_page'))
self.assertEqual(response.status_code, 302)
def test_upload_avatar_success(self):
image = SimpleUploadedFile('avatar.png', b'file_content', content_type='image/png')
response = self.client.post(reverse('upload_avatar'), {'avatar': image})
data = json.loads(response.content)
self.assertTrue(data['success'])
self.assertIn('avatar_url', data)
def test_upload_avatar_no_file(self):
response = self.client.post(reverse('upload_avatar'))
data = json.loads(response.content)
self.assertFalse(data['success'])
self.assertEqual(data['message'], '没有接收到avatar文件')
def test_upload_avatar_not_logged_in(self):
self.client.logout()
response = self.client.post(reverse('upload_avatar'))
data = json.loads(response.content)
self.assertFalse(data['success'])
def test_upload_banner_success(self):
image = SimpleUploadedFile('banner.png', b'file_content', content_type='image/png')
response = self.client.post(reverse('upload_banner'), {'personal_background': image})
data = json.loads(response.content)
self.assertTrue(data['success'])
self.assertIn('bg_url', data)
def test_upload_banner_no_file(self):
response = self.client.post(reverse('upload_banner'))
data = json.loads(response.content)
self.assertFalse(data['success'])
self.assertEqual(data['message'], '未收到文件')
def test_upload_banner_not_logged_in(self):
self.client.logout()
response = self.client.post(reverse('upload_banner'))
data = json.loads(response.content)
self.assertFalse(data['success'])
def test_upload_pagebg_success(self):
image = SimpleUploadedFile('pagebg.png', b'file_content', content_type='image/png')
response = self.client.post(reverse('upload_pagebg'), {'page_background': image})
data = json.loads(response.content)
self.assertTrue(data['success'])
self.assertIn('bg_url', data)
def test_upload_pagebg_no_file(self):
response = self.client.post(reverse('upload_pagebg'))
data = json.loads(response.content)
self.assertFalse(data['success'])
self.assertEqual(data['message'], '未收到文件')
def test_upload_pagebg_not_logged_in(self):
self.client.logout()
response = self.client.post(reverse('upload_pagebg'))
data = json.loads(response.content)
self.assertFalse(data['success'])
def test_delete_post_not_logged_in(self):
self.client.logout()
response = self.client.post(reverse('delete_post', args=[1]))
self.assertEqual(response.status_code, 302)
def test_delete_post_invalid(self):
response = self.client.post(reverse('delete_post', args=[9999]))
self.assertEqual(response.status_code, 404)

+ 1
- 0
MyPage/views.py View File

@ -131,6 +131,7 @@ def upload_page_background(request):
# 删除帖子
@login_required(login_url='login')
def delete_post(request, post_id):
post = get_object_or_404(Post, id=post_id, user=request.user)
if request.method == 'POST':

+ 32
- 0
Schedule/tests.py View File

@ -2,6 +2,8 @@ from django.test import TestCase, Client
from django.urls import reverse
from django.contrib.auth import get_user_model
from .models import Event, Task
from rest_framework.test import APIClient
import json
User = get_user_model()
@ -31,3 +33,33 @@ class ScheduleApiTest(TestCase):
def test_event_list_api(self):
response = self.client.get(reverse('event-list'))
self.assertIn(response.status_code, [200, 403, 401])
class ScheduleViewsTest(TestCase):
def setUp(self):
self.client = APIClient()
self.user = User.objects.create_user(username='testuser4', password='testpass')
self.client.force_authenticate(user=self.user)
self.event = Event.objects.create(user=self.user, title='Event', date='2025-01-01', time='12:00', description='desc')
self.task = Task.objects.create(user=self.user, text='Task', event=self.event)
def test_event_list_unauthenticated(self):
self.client.force_authenticate(user=None)
response = self.client.get(reverse('event-list'))
self.assertEqual(response.status_code, 401)
def test_event_detail_not_exist(self):
response = self.client.get(reverse('event-detail', args=[9999]))
self.assertEqual(response.status_code, 404)
def test_task_toggle_complete_not_exist(self):
response = self.client.post(reverse('task-toggle', args=[9999]))
self.assertEqual(response.status_code, 404)
def test_task_delete_not_exist(self):
response = self.client.delete(reverse('task-delete', args=[9999]))
self.assertEqual(response.status_code, 404)
def test_today_events_unauthenticated(self):
self.client.force_authenticate(user=None)
response = self.client.get(reverse('today-events'))
self.assertEqual(response.status_code, 401)

+ 28
- 0
users/tests.py View File

@ -1,6 +1,7 @@
from django.test import TestCase, Client
from django.urls import reverse
from .models import CustomUser
from django.contrib.auth import get_user_model
# Create your tests here.
@ -23,3 +24,30 @@ class UserAuthViewsTest(TestCase):
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])
def test_register_username_exists(self):
response = self.client.post(reverse('register'), {'username': 'testuser2', 'email': 'test2@example.com', 'password': 'testpass', 'password_confirm': 'testpass', 'agreed_terms': True})
self.assertIn(response.status_code, [200, 302])
def test_register_email_exists(self):
CustomUser = get_user_model()
CustomUser.objects.create_user(username='otheruser', email='test2@example.com', password='testpass')
response = self.client.post(reverse('register'), {'username': 'newuser', 'email': 'test2@example.com', 'password': 'testpass', 'password_confirm': 'testpass', 'agreed_terms': True})
self.assertIn(response.status_code, [200, 302])
def test_register_password_mismatch(self):
response = self.client.post(reverse('register'), {'username': 'newuser', 'email': 'new@example.com', 'password': 'pass1', 'password_confirm': 'pass2', 'agreed_terms': True})
self.assertIn(response.status_code, [200, 302])
def test_login_username_not_exist(self):
response = self.client.post(reverse('login'), {'username': 'notexist', 'password': 'testpass'})
self.assertIn(response.status_code, [200, 302])
def test_login_password_wrong(self):
response = self.client.post(reverse('login'), {'username': 'testuser2', 'password': 'wrongpass'})
self.assertIn(response.status_code, [200, 302])
def test_logout(self):
self.client.login(username='testuser2', password='testpass')
response = self.client.get(reverse('logout'))
self.assertEqual(response.status_code, 302)

Loading…
Cancel
Save