# coding=utf-8
"""Unit tests for render.py."""
from oauth_dropins.webutil.util import json_dumps
from models import Activity
import render
from . import testutil
class RenderTest(testutil.TestCase):
def setUp(self):
super().setUp()
self.as2 = {
'@context': 'https://www.w3.org/ns/activitystreams',
'type': 'Note',
'id': 'http://this/reply',
'url': 'http://this/reply',
'content': 'A ☕ reply',
'inReplyTo': 'http://orig/post',
}
self.mf2 = {
'type': ['h-entry'],
'properties': {
'uid': ['http://this/reply'],
'url': ['http://this/reply'],
'content': [{'value': 'A ☕ reply'}],
'in-reply-to': ['http://orig/post'],
},
}
self.atom = """\
http://this/reply
A ☕ reply
"""
self.html = """\
http://this/reply
http://this/reply
A ☕ reply
"""
def test_render_errors(self):
for source, target in ('', ''), ('abc', ''), ('', 'xyz'):
resp = self.client.get(f'/render?source={source}&target={target}')
self.assertEqual(400, resp.status_code, resp.get_data(as_text=True))
# no Activity
resp = self.client.get('/render?source=abc&target=xyz')
self.assertEqual(404, resp.status_code)
# no source data
Activity(id='abc xyz').put()
resp = self.client.get('/render?source=abc&target=xyz')
self.assertEqual(404, resp.status_code)
def test_render_as2(self):
Activity(id='abc xyz', source_as2=json_dumps(self.as2)).put()
resp = self.client.get('/render?source=abc&target=xyz')
self.assertEqual(200, resp.status_code)
self.assert_multiline_equals(self.html, resp.get_data(as_text=True),
ignore_blanks=True)
def test_render_mf2(self):
Activity(id='abc xyz', source_mf2=json_dumps(self.mf2)).put()
resp = self.client.get('/render?source=abc&target=xyz')
self.assertEqual(200, resp.status_code)
self.assert_multiline_equals(self.html, resp.get_data(as_text=True),
ignore_blanks=True)
def test_render_atom(self):
Activity(id='abc xyz', source_atom=self.atom).put()
resp = self.client.get('/render?source=abc&target=xyz')
self.assertEqual(200, resp.status_code)
self.assert_multiline_equals(self.html, resp.get_data(as_text=True),
ignore_blanks=True)