You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

116 lines
4.6 KiB

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()
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)
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)