##// END OF EJS Templates
First add the truncator (if there is none in the text itself), then closing tags
First add the truncator (if there is none in the text itself), then closing tags

File last commit:

r1586:931a7e94 default
r1788:e1bfd1eb default
Show More
test_sync.py
105 lines | 3.5 KiB | text/x-python | PythonLexer
from django.test import TestCase
from boards.models import KeyPair, Post, Tag
from boards.models.post.sync import SyncManager
from boards.tests.mocks import MockRequest
from boards.views.sync import response_get
__author__ = 'neko259'
class SyncTest(TestCase):
def test_get(self):
"""
Forms a GET request of a post and checks the response.
"""
key = KeyPair.objects.generate_key(primary=True)
tag = Tag.objects.create(name='tag1')
post = Post.objects.create_post(title='test_title',
text='test_text\rline two',
tags=[tag])
request = MockRequest()
request.body = (
'<request type="get" version="1.0">'
'<model name="post" version="1.0">'
'<id key="%s" local-id="%d" type="%s" />'
'</model>'
'</request>' % (post.global_id.key,
post.id,
post.global_id.key_type)
)
response = response_get(request).content.decode()
self.assertTrue(
'<status>success</status>'
'<models>'
'<model name="post">'
'<content>'
'<id key="%s" local-id="%d" type="%s" />'
'<title>%s</title>'
'<text>%s</text>'
'<tags><tag>%s</tag></tags>'
'<pub-time>%s</pub-time>'
'<version>%s</version>'
'</content>' % (
post.global_id.key,
post.global_id.local_id,
post.global_id.key_type,
post.title,
post.get_sync_text(),
post.get_thread().get_tags().first().name,
post.get_pub_time_str(),
post.version,
) in response,
'Wrong response generated for the GET request.')
post.delete()
key.delete()
KeyPair.objects.generate_key(primary=True)
SyncManager.parse_response_get(response, None)
self.assertEqual(1, Post.objects.count(),
'Post was not created from XML response.')
parsed_post = Post.objects.first()
self.assertEqual('tag1',
parsed_post.get_thread().get_tags().first().name,
'Invalid tag was parsed.')
SyncManager.parse_response_get(response, None)
self.assertEqual(1, Post.objects.count(),
'The same post was imported twice.')
self.assertEqual(1, parsed_post.global_id.signature_set.count(),
'Signature was not saved.')
post = parsed_post
# Trying to sync the same once more
response = response_get(request).content.decode()
self.assertTrue(
'<status>success</status>'
'<models>'
'<model name="post">'
'<content>'
'<id key="%s" local-id="%d" type="%s" />'
'<title>%s</title>'
'<text>%s</text>'
'<tags><tag>%s</tag></tags>'
'<pub-time>%s</pub-time>'
'<version>%s</version>'
'</content>' % (
post.global_id.key,
post.global_id.local_id,
post.global_id.key_type,
post.title,
post.get_sync_text(),
post.get_thread().get_tags().first().name,
post.get_pub_time_str(),
post.version,
) in response,
'Wrong response generated for the GET request.')