mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-12-24 00:50:35 +00:00
more tests
This commit is contained in:
parent
ca8eb75352
commit
aefb718456
3 changed files with 117 additions and 1 deletions
66
fedireads/tests/test_quotation.py
Normal file
66
fedireads/tests/test_quotation.py
Normal file
|
@ -0,0 +1,66 @@
|
|||
from django.test import TestCase
|
||||
|
||||
from fedireads import models
|
||||
from fedireads import status as status_builder
|
||||
|
||||
|
||||
class Quotation(TestCase):
|
||||
''' we have hecka ways to create statuses '''
|
||||
def setUp(self):
|
||||
self.user = models.User.objects.create_user(
|
||||
'mouse', 'mouse@mouse.mouse', 'mouseword')
|
||||
self.book = models.Edition.objects.create(title='Example Edition')
|
||||
|
||||
|
||||
def test_create_quotation(self):
|
||||
quotation = status_builder.create_quotation(
|
||||
self.user, self.book, 'commentary', 'a quote')
|
||||
self.assertEqual(quotation.quote, 'a quote')
|
||||
self.assertEqual(quotation.content, 'commentary')
|
||||
|
||||
|
||||
def test_quotation_from_activity(self):
|
||||
activity = {
|
||||
'id': 'https://example.com/user/mouse/quotation/13',
|
||||
'url': 'https://example.com/user/mouse/quotation/13',
|
||||
'inReplyTo': None,
|
||||
'published': '2020-05-10T02:38:31.150343+00:00',
|
||||
'attributedTo': 'https://example.com/user/mouse',
|
||||
'to': [
|
||||
'https://www.w3.org/ns/activitystreams#Public'
|
||||
],
|
||||
'cc': [
|
||||
'https://example.com/user/mouse/followers'
|
||||
],
|
||||
'sensitive': False,
|
||||
'content': 'commentary',
|
||||
'type': 'Note',
|
||||
'attachment': [
|
||||
{
|
||||
'type': 'Document',
|
||||
'mediaType': 'image//images/covers/2b4e4712-5a4d-4ac1-9df4-634cc9c7aff3jpg',
|
||||
'url': 'https://example.com/images/covers/2b4e4712-5a4d-4ac1-9df4-634cc9c7aff3jpg',
|
||||
'name': 'Cover of \'This Is How You Lose the Time War\''
|
||||
}
|
||||
],
|
||||
'replies': {
|
||||
'id': 'https://example.com/user/mouse/quotation/13/replies',
|
||||
'type': 'Collection',
|
||||
'first': {
|
||||
'type': 'CollectionPage',
|
||||
'next': 'https://example.com/user/mouse/quotation/13/replies?only_other_accounts=true&page=true',
|
||||
'partOf': 'https://example.com/user/mouse/quotation/13/replies',
|
||||
'items': []
|
||||
}
|
||||
},
|
||||
'inReplyToBook': self.book.absolute_id,
|
||||
'fedireadsType': 'Quotation',
|
||||
'quote': 'quote body'
|
||||
}
|
||||
quotation = status_builder.create_quotation_from_activity(
|
||||
self.user, activity)
|
||||
self.assertEqual(quotation.content, 'commentary')
|
||||
self.assertEqual(quotation.name, 'quote body')
|
||||
self.assertEqual(quotation.book, self.book)
|
||||
self.assertEqual(
|
||||
quotation.published_date, '2020-05-10T02:38:31.150343+00:00')
|
50
fedireads/tests/test_sanitize_html.py
Normal file
50
fedireads/tests/test_sanitize_html.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
from django.test import TestCase
|
||||
|
||||
from fedireads.sanitize_html import InputHtmlParser
|
||||
|
||||
|
||||
class Sanitizer(TestCase):
|
||||
def test_no_html(self):
|
||||
input_text = 'no html '
|
||||
parser = InputHtmlParser()
|
||||
parser.feed(input_text)
|
||||
output = parser.get_output()
|
||||
self.assertEqual(input_text, output)
|
||||
|
||||
|
||||
def test_valid_html(self):
|
||||
input_text = '<b>yes </b> <i>html</i>'
|
||||
parser = InputHtmlParser()
|
||||
parser.feed(input_text)
|
||||
output = parser.get_output()
|
||||
self.assertEqual(input_text, output)
|
||||
|
||||
|
||||
def test_valid_html_attrs(self):
|
||||
input_text = '<a href="fish.com">yes </a> <i>html</i>'
|
||||
parser = InputHtmlParser()
|
||||
parser.feed(input_text)
|
||||
output = parser.get_output()
|
||||
self.assertEqual(input_text, output)
|
||||
|
||||
|
||||
def test_invalid_html(self):
|
||||
input_text = '<b>yes <i>html</i>'
|
||||
parser = InputHtmlParser()
|
||||
parser.feed(input_text)
|
||||
output = parser.get_output()
|
||||
self.assertEqual('yes html', output)
|
||||
|
||||
input_text = 'yes <i></b>html </i>'
|
||||
parser = InputHtmlParser()
|
||||
parser.feed(input_text)
|
||||
output = parser.get_output()
|
||||
self.assertEqual('yes html ', output)
|
||||
|
||||
|
||||
def test_disallowed_html(self):
|
||||
input_text = '<div> yes <i>html</i></div>'
|
||||
parser = InputHtmlParser()
|
||||
parser.feed(input_text)
|
||||
output = parser.get_output()
|
||||
self.assertEqual(' yes <i>html</i>', output)
|
|
@ -10,7 +10,7 @@ username_regex = r'(?P<username>[\w\-_]+@[\w\-\_\.]+)'
|
|||
localname_regex = r'(?P<username>[\w\-_]+)'
|
||||
user_path = r'^user/%s' % username_regex
|
||||
local_user_path = r'^user/%s' % localname_regex
|
||||
status_path = r'%s/(status|review|comment)/(?P<status_id>\d+)' % local_user_path
|
||||
status_path = r'%s/(status|review|comment|quotation)/(?P<status_id>\d+)' % local_user_path
|
||||
book_path = r'^book/(?P<book_id>\d+)'
|
||||
|
||||
handler404 = 'fedireads.views.not_found_page'
|
||||
|
|
Loading…
Reference in a new issue