|
|
import simplejson
|
|
|
|
|
|
from django.test import TestCase
|
|
|
from boards.views import api
|
|
|
|
|
|
from boards.models import Tag, Post
|
|
|
from boards.tests.mocks import MockRequest
|
|
|
from boards.utils import datetime_to_epoch
|
|
|
|
|
|
|
|
|
class ApiTest(TestCase):
|
|
|
def test_thread_diff(self):
|
|
|
tag, created = Tag.objects.get_or_create_with_alias(name='test_tag')
|
|
|
opening_post = Post.objects.create_post(title='title', text='text',
|
|
|
tags=[tag])
|
|
|
|
|
|
req = MockRequest()
|
|
|
req.POST['thread'] = opening_post.id
|
|
|
req.POST['uids'] = opening_post.uid
|
|
|
# Check the exact timestamp post was added
|
|
|
empty_response = api.api_get_threaddiff(req)
|
|
|
diff = simplejson.loads(empty_response.content)
|
|
|
self.assertEqual(0, len(diff['updated']),
|
|
|
'There must be no updated posts in the diff.')
|
|
|
|
|
|
uids = [opening_post.uid]
|
|
|
|
|
|
reply = Post.objects.create_post(title='',
|
|
|
text='[post]%d[/post]\ntext' % opening_post.id,
|
|
|
thread=opening_post.get_thread())
|
|
|
req = MockRequest()
|
|
|
req.POST['thread'] = opening_post.id
|
|
|
req.POST['uids'] = ' '.join(uids)
|
|
|
req.user = None
|
|
|
# Check the timestamp before post was added
|
|
|
response = api.api_get_threaddiff(req)
|
|
|
diff = simplejson.loads(response.content)
|
|
|
self.assertEqual(2, len(diff['updated']),
|
|
|
'There must be 2 updated posts in the diff.')
|
|
|
|
|
|
# Reload post to get the new UID
|
|
|
opening_post = Post.objects.get(id=opening_post.id)
|
|
|
req = MockRequest()
|
|
|
req.POST['thread'] = opening_post.id
|
|
|
req.POST['uids'] = ' '.join([opening_post.uid, reply.uid])
|
|
|
empty_response = api.api_get_threaddiff(req)
|
|
|
diff = simplejson.loads(empty_response.content)
|
|
|
self.assertEqual(0, len(diff['updated']),
|
|
|
'There must be no updated posts in the diff.')
|
|
|
|
|
|
def test_get_threads(self):
|
|
|
# Create 10 threads
|
|
|
tag, created = Tag.objects.get_or_create_with_alias(name='test_tag')
|
|
|
for i in range(5):
|
|
|
Post.objects.create_post(title='title', text='text', tags=[tag])
|
|
|
|
|
|
# Get all threads
|
|
|
response = api.api_get_threads(MockRequest(), 5)
|
|
|
diff = simplejson.loads(response.content)
|
|
|
self.assertEqual(5, len(diff), 'Invalid thread list response.')
|
|
|
|
|
|
# Get less threads then exist
|
|
|
response = api.api_get_threads(MockRequest(), 3)
|
|
|
diff = simplejson.loads(response.content)
|
|
|
self.assertEqual(3, len(diff), 'Invalid thread list response.')
|
|
|
|
|
|
# Get more threads then exist
|
|
|
response = api.api_get_threads(MockRequest(), 10)
|
|
|
diff = simplejson.loads(response.content)
|
|
|
self.assertEqual(5, len(diff), 'Invalid thread list response.')
|
|
|
|