##// END OF EJS Templates
Moved signatures block to the model block. All the signed content is in the 'content' block now. Removed edit time, previous and next posts links from the XML sync output because they can be computed from the post itself and can be changed locally for foreign posts (which breaks the signature)
Moved signatures block to the model block. All the signed content is in the 'content' block now. Removed edit time, previous and next posts links from the XML sync output because they can be computed from the post itself and can be changed locally for foreign posts (which breaks the signature)

File last commit:

r821:572aaa88 default
r838:2b96b9e7 decentral
Show More
test_post.py
111 lines | 3.6 KiB | text/x-python | PythonLexer
from django.core.paginator import Paginator
from django.test import TestCase
from boards import settings
from boards.models import Tag, Post, Thread
class PostTests(TestCase):
def _create_post(self):
tag = Tag.objects.create(name='test_tag')
return Post.objects.create_post(title='title', text='text',
tags=[tag])
def test_post_add(self):
"""Test adding post"""
post = self._create_post()
self.assertIsNotNone(post, 'No post was created.')
self.assertEqual('test_tag', post.get_thread().tags.all()[0].name,
'No tags were added to the post.')
def test_delete_post(self):
"""Test post deletion"""
post = self._create_post()
post_id = post.id
Post.objects.delete_post(post)
self.assertFalse(Post.objects.filter(id=post_id).exists())
def test_delete_thread(self):
"""Test thread deletion"""
opening_post = self._create_post()
thread = opening_post.get_thread()
reply = Post.objects.create_post("", "", thread=thread)
thread.delete()
self.assertFalse(Post.objects.filter(id=reply.id).exists())
def test_post_to_thread(self):
"""Test adding post to a thread"""
op = self._create_post()
post = Post.objects.create_post("", "", thread=op.get_thread())
self.assertIsNotNone(post, 'Reply to thread wasn\'t created')
self.assertEqual(op.get_thread().last_edit_time, post.pub_time,
'Post\'s create time doesn\'t match thread last edit'
' time')
def test_delete_posts_by_ip(self):
"""Test deleting posts with the given ip"""
post = self._create_post()
post_id = post.id
Post.objects.delete_posts_by_ip('0.0.0.0')
self.assertFalse(Post.objects.filter(id=post_id).exists())
def test_get_thread(self):
"""Test getting all posts of a thread"""
opening_post = self._create_post()
for i in range(2):
Post.objects.create_post('title', 'text',
thread=opening_post.get_thread())
thread = opening_post.get_thread()
self.assertEqual(3, thread.replies.count())
def test_create_post_with_tag(self):
"""Test adding tag to post"""
tag = Tag.objects.create(name='test_tag')
post = Post.objects.create_post(title='title', text='text', tags=[tag])
thread = post.get_thread()
self.assertIsNotNone(post, 'Post not created')
self.assertTrue(tag in thread.tags.all(), 'Tag not added to thread')
self.assertTrue(thread in tag.threads.all(), 'Thread not added to tag')
def test_thread_max_count(self):
"""Test deletion of old posts when the max thread count is reached"""
for i in range(settings.MAX_THREAD_COUNT + 1):
self._create_post()
self.assertEqual(settings.MAX_THREAD_COUNT,
len(Thread.objects.filter(archived=False)))
def test_pages(self):
"""Test that the thread list is properly split into pages"""
for i in range(settings.MAX_THREAD_COUNT):
self._create_post()
all_threads = Thread.objects.filter(archived=False)
paginator = Paginator(Thread.objects.filter(archived=False),
settings.THREADS_PER_PAGE)
posts_in_second_page = paginator.page(2).object_list
first_post = posts_in_second_page[0]
self.assertEqual(all_threads[settings.THREADS_PER_PAGE].id,
first_post.id)