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 = Tag.objects.create(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) # 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 = Tag.objects.create(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.')