diff --git a/tests.py b/tests.py new file mode 100644 index 0000000..3aecc15 --- /dev/null +++ b/tests.py @@ -0,0 +1,131 @@ +from django.test import Client, RequestFactory, TransactionTestCase +from django.urls import reverse + +from accounts.models import BlogUser +from blog.models import Category, Article +from comments.models import Comment +from comments.templatetags.comments_tags import * +from djangoblog.utils import get_max_articleid_commentid + + +# zr 评论模块测试类 +class CommentsTest(TransactionTestCase): + # zr 测试初始化设置 + def setUp(self): + self.client = Client() + self.factory = RequestFactory() + # zr 导入并设置博客配置,开启评论审核 + from blog.models import BlogSettings + value = BlogSettings() + value.comment_need_review = True + value.save() + + # zr 创建测试用的超级用户 + self.user = BlogUser.objects.create_superuser( + email="liangliangyy1@gmail.com", + username="liangliangyy1", + password="liangliangyy1") + + # zr 更新文章评论状态为启用 + def update_article_comment_status(self, article): + comments = article.comment_set.all() + for comment in comments: + comment.is_enable = True + comment.save() + + # zr 测试评论验证功能 + def test_validate_comment(self): + # zr 用户登录 + self.client.login(username='liangliangyy1', password='liangliangyy1') + + # zr 创建测试分类 + category = Category() + category.name = "categoryccc" + category.save() + + # zr 创建测试文章 + article = Article() + article.title = "nicetitleccc" + article.body = "nicecontentccc" + article.author = self.user + article.category = category + article.type = 'a' + article.status = 'p' + article.save() + + # zr 获取评论提交URL + comment_url = reverse( + 'comments:postcomment', kwargs={ + 'article_id': article.id}) + + # zr 测试提交第一条评论 + response = self.client.post(comment_url, + { + 'body': '123ffffffffff' + }) + + self.assertEqual(response.status_code, 302) + + # zr 验证评论初始状态为未显示(需要审核) + article = Article.objects.get(pk=article.pk) + self.assertEqual(len(article.comment_list()), 0) + # zr 更新评论状态后验证评论显示 + self.update_article_comment_status(article) + self.assertEqual(len(article.comment_list()), 1) + + # zr 测试提交第二条评论 + response = self.client.post(comment_url, + { + 'body': '123ffffffffff', + }) + + self.assertEqual(response.status_code, 302) + + # zr 验证第二条评论 + article = Article.objects.get(pk=article.pk) + self.update_article_comment_status(article) + self.assertEqual(len(article.comment_list()), 2) + # zr 获取父评论ID用于回复测试 + parent_comment_id = article.comment_list()[0].id + + # zr 测试回复评论(包含Markdown格式内容) + response = self.client.post(comment_url, + { + 'body': ''' + # Title1 + + ```python + import os + ``` + + [url](https://www.lylinux.net/) + + [ddd](http://www.baidu.com) + + + ''', + 'parent_comment_id': parent_comment_id + }) + + self.assertEqual(response.status_code, 302) + # zr 验证回复评论成功 + self.update_article_comment_status(article) + article = Article.objects.get(pk=article.pk) + self.assertEqual(len(article.comment_list()), 3) + + # zr 测试评论树解析功能 + comment = Comment.objects.get(id=parent_comment_id) + tree = parse_commenttree(article.comment_list(), comment) + self.assertEqual(len(tree), 1) + + # zr 测试评论项显示功能 + data = show_comment_item(comment, True) + self.assertIsNotNone(data) + + # zr 测试获取最大文章ID和评论ID + s = get_max_articleid_commentid() + self.assertIsNotNone(s) + + # zr 测试发送评论邮件功能 + from comments.utils import send_comment_email + send_comment_email(comment)