mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2025-01-03 05:48:44 +00:00
Adds status tests
This commit is contained in:
parent
4ec64c02f4
commit
6c80b128a4
7 changed files with 252 additions and 171 deletions
|
@ -39,5 +39,5 @@
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<input class="toggle-control" type="radio" name="status-tabs-{{ book.id }}" id="quote-{{ book.id }}">
|
<input class="toggle-control" type="radio" name="status-tabs-{{ book.id }}" id="quote-{{ book.id }}">
|
||||||
{% include 'snippets/create_status_form.html' with type="quote" placeholder="An excerpt from '"|add:book.title|add:"'" %}
|
{% include 'snippets/create_status_form.html' with type="quotation" placeholder="An excerpt from '"|add:book.title|add:"'" %}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="control">
|
<div class="control">
|
||||||
<label class="label" for="id_{% if type == 'quote' %}quote{% else %}content{% endif %}_{{ book.id }}_{{ type }}">{{ type|title }}:</label>
|
<label class="label" for="id_{% if type == 'quotation' %}quote{% else %}content{% endif %}_{{ book.id }}_{{ type }}">{{ type|title }}:</label>
|
||||||
|
|
||||||
{% if type == 'review' %}
|
{% if type == 'review' %}
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
@ -29,14 +29,14 @@
|
||||||
|
|
||||||
{% include 'snippets/content_warning_field.html' %}
|
{% include 'snippets/content_warning_field.html' %}
|
||||||
|
|
||||||
{% if type == 'quote' %}
|
{% if type == 'quotation' %}
|
||||||
<textarea name="quote" class="textarea" id="id_quote_{{ book.id }}_{{ type }}" placeholder="{{ placeholder }}" required></textarea>
|
<textarea name="quote" class="textarea" id="id_quote_{{ book.id }}_{{ type }}" placeholder="{{ placeholder }}" required></textarea>
|
||||||
{% else %}
|
{% else %}
|
||||||
<textarea name="content" class="textarea" id="id_content_{{ book.id }}_{{ type }}" placeholder="{{ placeholder }}" required></textarea>
|
<textarea name="content" class="textarea" id="id_content_{{ book.id }}_{{ type }}" placeholder="{{ placeholder }}" required></textarea>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{% if type == 'quote' %}
|
{% if type == 'quotation' %}
|
||||||
<div class="control">
|
<div class="control">
|
||||||
<label class="label" for="id_content_{{ book.id }}_quote">Comment:</label>
|
<label class="label" for="id_content_{{ book.id }}_quote">Comment:</label>
|
||||||
<textarea name="content" class="textarea is-small" id="id_content_{{ book.id }}_quote"></textarea>
|
<textarea name="content" class="textarea is-small" id="id_content_{{ book.id }}_quote"></textarea>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{% load bookwyrm_tags %}
|
{% load bookwyrm_tags %}
|
||||||
{% with status.id|uuid as uuid %}
|
{% with status.id|uuid as uuid %}
|
||||||
<form class="is-flex-grow-1" name="reply" action="/reply" method="post" onsubmit="return reply(event)">
|
<form class="is-flex-grow-1" name="reply" action="/post/reply" method="post" onsubmit="return reply(event)">
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input type="hidden" name="reply_parent" value="{{ status.id }}">
|
<input type="hidden" name="reply_parent" value="{{ status.id }}">
|
||||||
|
|
|
@ -7,7 +7,7 @@ from django import template
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
from bookwyrm import models
|
from bookwyrm import models
|
||||||
from bookwyrm.outgoing import to_markdown
|
from bookwyrm.views.status import to_markdown
|
||||||
|
|
||||||
|
|
||||||
register = template.Library()
|
register = template.Library()
|
||||||
|
|
|
@ -444,169 +444,6 @@ class Outgoing(TestCase):
|
||||||
self.assertTrue(status.deleted)
|
self.assertTrue(status.deleted)
|
||||||
|
|
||||||
|
|
||||||
def test_handle_status(self):
|
|
||||||
''' create a status '''
|
|
||||||
form = forms.CommentForm({
|
|
||||||
'content': 'hi',
|
|
||||||
'user': self.local_user.id,
|
|
||||||
'book': self.book.id,
|
|
||||||
'privacy': 'public',
|
|
||||||
})
|
|
||||||
with patch('bookwyrm.broadcast.broadcast_task.delay'):
|
|
||||||
outgoing.handle_status(self.local_user, form)
|
|
||||||
status = models.Comment.objects.get()
|
|
||||||
self.assertEqual(status.content, '<p>hi</p>')
|
|
||||||
self.assertEqual(status.user, self.local_user)
|
|
||||||
self.assertEqual(status.book, self.book)
|
|
||||||
|
|
||||||
def test_handle_status_reply(self):
|
|
||||||
''' create a status in reply to an existing status '''
|
|
||||||
user = models.User.objects.create_user(
|
|
||||||
'rat', 'rat@rat.com', 'password', local=True)
|
|
||||||
parent = models.Status.objects.create(
|
|
||||||
content='parent status', user=self.local_user)
|
|
||||||
form = forms.ReplyForm({
|
|
||||||
'content': 'hi',
|
|
||||||
'user': user.id,
|
|
||||||
'reply_parent': parent.id,
|
|
||||||
'privacy': 'public',
|
|
||||||
})
|
|
||||||
with patch('bookwyrm.broadcast.broadcast_task.delay'):
|
|
||||||
outgoing.handle_status(user, form)
|
|
||||||
status = models.Status.objects.get(user=user)
|
|
||||||
self.assertEqual(status.content, '<p>hi</p>')
|
|
||||||
self.assertEqual(status.user, user)
|
|
||||||
self.assertEqual(
|
|
||||||
models.Notification.objects.get().user, self.local_user)
|
|
||||||
|
|
||||||
def test_handle_status_mentions(self):
|
|
||||||
''' @mention a user in a post '''
|
|
||||||
user = models.User.objects.create_user(
|
|
||||||
'rat@%s' % DOMAIN, 'rat@rat.com', 'password',
|
|
||||||
local=True, localname='rat')
|
|
||||||
form = forms.CommentForm({
|
|
||||||
'content': 'hi @rat',
|
|
||||||
'user': self.local_user.id,
|
|
||||||
'book': self.book.id,
|
|
||||||
'privacy': 'public',
|
|
||||||
})
|
|
||||||
|
|
||||||
with patch('bookwyrm.broadcast.broadcast_task.delay'):
|
|
||||||
outgoing.handle_status(self.local_user, form)
|
|
||||||
status = models.Status.objects.get()
|
|
||||||
self.assertEqual(list(status.mention_users.all()), [user])
|
|
||||||
self.assertEqual(models.Notification.objects.get().user, user)
|
|
||||||
self.assertEqual(
|
|
||||||
status.content,
|
|
||||||
'<p>hi <a href="%s">@rat</a></p>' % user.remote_id)
|
|
||||||
|
|
||||||
def test_handle_status_reply_with_mentions(self):
|
|
||||||
''' reply to a post with an @mention'ed user '''
|
|
||||||
user = models.User.objects.create_user(
|
|
||||||
'rat', 'rat@rat.com', 'password',
|
|
||||||
local=True, localname='rat')
|
|
||||||
form = forms.CommentForm({
|
|
||||||
'content': 'hi @rat@example.com',
|
|
||||||
'user': self.local_user.id,
|
|
||||||
'book': self.book.id,
|
|
||||||
'privacy': 'public',
|
|
||||||
})
|
|
||||||
|
|
||||||
with patch('bookwyrm.broadcast.broadcast_task.delay'):
|
|
||||||
outgoing.handle_status(self.local_user, form)
|
|
||||||
status = models.Status.objects.get()
|
|
||||||
|
|
||||||
form = forms.ReplyForm({
|
|
||||||
'content': 'right',
|
|
||||||
'user': user,
|
|
||||||
'privacy': 'public',
|
|
||||||
'reply_parent': status.id
|
|
||||||
})
|
|
||||||
with patch('bookwyrm.broadcast.broadcast_task.delay'):
|
|
||||||
outgoing.handle_status(user, form)
|
|
||||||
|
|
||||||
reply = models.Status.replies(status).first()
|
|
||||||
self.assertEqual(reply.content, '<p>right</p>')
|
|
||||||
self.assertEqual(reply.user, user)
|
|
||||||
self.assertTrue(self.remote_user in reply.mention_users.all())
|
|
||||||
self.assertTrue(self.local_user in reply.mention_users.all())
|
|
||||||
|
|
||||||
def test_find_mentions(self):
|
|
||||||
''' detect and look up @ mentions of users '''
|
|
||||||
user = models.User.objects.create_user(
|
|
||||||
'nutria@%s' % DOMAIN, 'nutria@nutria.com', 'password',
|
|
||||||
local=True, localname='nutria')
|
|
||||||
self.assertEqual(user.username, 'nutria@%s' % DOMAIN)
|
|
||||||
|
|
||||||
self.assertEqual(
|
|
||||||
list(outgoing.find_mentions('@nutria'))[0],
|
|
||||||
('@nutria', user)
|
|
||||||
)
|
|
||||||
self.assertEqual(
|
|
||||||
list(outgoing.find_mentions('leading text @nutria'))[0],
|
|
||||||
('@nutria', user)
|
|
||||||
)
|
|
||||||
self.assertEqual(
|
|
||||||
list(outgoing.find_mentions('leading @nutria trailing text'))[0],
|
|
||||||
('@nutria', user)
|
|
||||||
)
|
|
||||||
self.assertEqual(
|
|
||||||
list(outgoing.find_mentions('@rat@example.com'))[0],
|
|
||||||
('@rat@example.com', self.remote_user)
|
|
||||||
)
|
|
||||||
|
|
||||||
multiple = list(outgoing.find_mentions('@nutria and @rat@example.com'))
|
|
||||||
self.assertEqual(multiple[0], ('@nutria', user))
|
|
||||||
self.assertEqual(multiple[1], ('@rat@example.com', self.remote_user))
|
|
||||||
|
|
||||||
with patch('bookwyrm.outgoing.handle_remote_webfinger') as rw:
|
|
||||||
rw.return_value = self.local_user
|
|
||||||
self.assertEqual(
|
|
||||||
list(outgoing.find_mentions('@beep@beep.com'))[0],
|
|
||||||
('@beep@beep.com', self.local_user)
|
|
||||||
)
|
|
||||||
with patch('bookwyrm.outgoing.handle_remote_webfinger') as rw:
|
|
||||||
rw.return_value = None
|
|
||||||
self.assertEqual(list(outgoing.find_mentions('@beep@beep.com')), [])
|
|
||||||
|
|
||||||
self.assertEqual(
|
|
||||||
list(outgoing.find_mentions('@nutria@%s' % DOMAIN))[0],
|
|
||||||
('@nutria@%s' % DOMAIN, user)
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_format_links(self):
|
|
||||||
''' find and format urls into a tags '''
|
|
||||||
url = 'http://www.fish.com/'
|
|
||||||
self.assertEqual(
|
|
||||||
outgoing.format_links(url),
|
|
||||||
'<a href="%s">www.fish.com/</a>' % url)
|
|
||||||
self.assertEqual(
|
|
||||||
outgoing.format_links('(%s)' % url),
|
|
||||||
'(<a href="%s">www.fish.com/</a>)' % url)
|
|
||||||
url = 'https://archive.org/details/dli.granth.72113/page/n25/mode/2up'
|
|
||||||
self.assertEqual(
|
|
||||||
outgoing.format_links(url),
|
|
||||||
'<a href="%s">' \
|
|
||||||
'archive.org/details/dli.granth.72113/page/n25/mode/2up</a>' \
|
|
||||||
% url)
|
|
||||||
url = 'https://openlibrary.org/search' \
|
|
||||||
'?q=arkady+strugatsky&mode=everything'
|
|
||||||
self.assertEqual(
|
|
||||||
outgoing.format_links(url),
|
|
||||||
'<a href="%s">openlibrary.org/search' \
|
|
||||||
'?q=arkady+strugatsky&mode=everything</a>' % url)
|
|
||||||
|
|
||||||
|
|
||||||
def test_to_markdown(self):
|
|
||||||
''' this is mostly handled in other places, but nonetheless '''
|
|
||||||
text = '_hi_ and http://fish.com is <marquee>rad</marquee>'
|
|
||||||
result = outgoing.to_markdown(text)
|
|
||||||
self.assertEqual(
|
|
||||||
result,
|
|
||||||
'<p><em>hi</em> and <a href="http://fish.com">fish.com</a> ' \
|
|
||||||
'is rad</p>')
|
|
||||||
|
|
||||||
|
|
||||||
def test_handle_favorite(self):
|
def test_handle_favorite(self):
|
||||||
''' create and broadcast faving a status '''
|
''' create and broadcast faving a status '''
|
||||||
status = models.Status.objects.create(
|
status = models.Status.objects.create(
|
||||||
|
|
242
bookwyrm/tests/views/test_status.py
Normal file
242
bookwyrm/tests/views/test_status.py
Normal file
|
@ -0,0 +1,242 @@
|
||||||
|
''' test for app action functionality '''
|
||||||
|
from unittest.mock import patch
|
||||||
|
from django.template.response import TemplateResponse
|
||||||
|
from django.test import TestCase
|
||||||
|
from django.test.client import RequestFactory
|
||||||
|
|
||||||
|
from bookwyrm import forms, models, views
|
||||||
|
from bookwyrm.activitypub import ActivitypubResponse
|
||||||
|
from bookwyrm.settings import DOMAIN
|
||||||
|
|
||||||
|
|
||||||
|
class StatusViews(TestCase):
|
||||||
|
''' viewing and creating statuses '''
|
||||||
|
def setUp(self):
|
||||||
|
''' we need basic test data and mocks '''
|
||||||
|
self.factory = RequestFactory()
|
||||||
|
self.local_user = models.User.objects.create_user(
|
||||||
|
'mouse@local.com', 'mouse@mouse.mouse', 'password',
|
||||||
|
local=True, localname='mouse')
|
||||||
|
|
||||||
|
|
||||||
|
def test_status_page(self):
|
||||||
|
''' there are so many views, this just makes sure it LOADS '''
|
||||||
|
view = views.Status.as_view()
|
||||||
|
status = models.Status.objects.create(
|
||||||
|
content='hi', user=self.local_user)
|
||||||
|
request = self.factory.get('')
|
||||||
|
request.user = self.local_user
|
||||||
|
with patch('bookwyrm.views.is_api_request') as is_api:
|
||||||
|
is_api.return_value = False
|
||||||
|
result = view(request, 'mouse', status.id)
|
||||||
|
self.assertIsInstance(result, TemplateResponse)
|
||||||
|
self.assertEqual(result.template_name, 'status.html')
|
||||||
|
self.assertEqual(result.status_code, 200)
|
||||||
|
|
||||||
|
with patch('bookwyrm.views.is_api_request') as is_api:
|
||||||
|
is_api.return_value = True
|
||||||
|
result = view(request, 'mouse', status.id)
|
||||||
|
self.assertIsInstance(result, ActivitypubResponse)
|
||||||
|
self.assertEqual(result.status_code, 200)
|
||||||
|
|
||||||
|
|
||||||
|
def test_replies_page(self):
|
||||||
|
''' there are so many views, this just makes sure it LOADS '''
|
||||||
|
view = views.Replies.as_view()
|
||||||
|
status = models.Status.objects.create(
|
||||||
|
content='hi', user=self.local_user)
|
||||||
|
request = self.factory.get('')
|
||||||
|
request.user = self.local_user
|
||||||
|
with patch('bookwyrm.views.status.is_api_request') as is_api:
|
||||||
|
is_api.return_value = False
|
||||||
|
result = view(request, 'mouse', status.id)
|
||||||
|
self.assertIsInstance(result, TemplateResponse)
|
||||||
|
self.assertEqual(result.template_name, 'status.html')
|
||||||
|
self.assertEqual(result.status_code, 200)
|
||||||
|
|
||||||
|
with patch('bookwyrm.views.is_api_request') as is_api:
|
||||||
|
is_api.return_value = True
|
||||||
|
result = view(request, 'mouse', status.id)
|
||||||
|
self.assertIsInstance(result, ActivitypubResponse)
|
||||||
|
self.assertEqual(result.status_code, 200)
|
||||||
|
|
||||||
|
|
||||||
|
def test_handle_status(self):
|
||||||
|
''' create a status '''
|
||||||
|
view = views.CreateStatus.as_view()
|
||||||
|
form = forms.CommentForm({
|
||||||
|
'content': 'hi',
|
||||||
|
'user': self.local_user.id,
|
||||||
|
'book': self.book.id,
|
||||||
|
'privacy': 'public',
|
||||||
|
})
|
||||||
|
request = self.factory.get('', form.data)
|
||||||
|
request.user = self.local_user
|
||||||
|
with patch('bookwyrm.broadcast.broadcast_task.delay'):
|
||||||
|
view(request, 'comment')
|
||||||
|
status = models.Comment.objects.get()
|
||||||
|
self.assertEqual(status.content, '<p>hi</p>')
|
||||||
|
self.assertEqual(status.user, self.local_user)
|
||||||
|
self.assertEqual(status.book, self.book)
|
||||||
|
|
||||||
|
def test_handle_status_reply(self):
|
||||||
|
''' create a status in reply to an existing status '''
|
||||||
|
view = views.CreateStatus.as_view()
|
||||||
|
user = models.User.objects.create_user(
|
||||||
|
'rat', 'rat@rat.com', 'password', local=True)
|
||||||
|
parent = models.Status.objects.create(
|
||||||
|
content='parent status', user=self.local_user)
|
||||||
|
form = forms.ReplyForm({
|
||||||
|
'content': 'hi',
|
||||||
|
'user': user.id,
|
||||||
|
'reply_parent': parent.id,
|
||||||
|
'privacy': 'public',
|
||||||
|
})
|
||||||
|
request = self.factory.get('', form.data)
|
||||||
|
request.user = self.local_user
|
||||||
|
with patch('bookwyrm.broadcast.broadcast_task.delay'):
|
||||||
|
view(request, 'reply')
|
||||||
|
status = models.Status.objects.get(user=user)
|
||||||
|
self.assertEqual(status.content, '<p>hi</p>')
|
||||||
|
self.assertEqual(status.user, user)
|
||||||
|
self.assertEqual(
|
||||||
|
models.Notification.objects.get().user, self.local_user)
|
||||||
|
|
||||||
|
def test_handle_status_mentions(self):
|
||||||
|
''' @mention a user in a post '''
|
||||||
|
view = views.CreateStatus.as_view()
|
||||||
|
user = models.User.objects.create_user(
|
||||||
|
'rat@%s' % DOMAIN, 'rat@rat.com', 'password',
|
||||||
|
local=True, localname='rat')
|
||||||
|
form = forms.CommentForm({
|
||||||
|
'content': 'hi @rat',
|
||||||
|
'user': self.local_user.id,
|
||||||
|
'book': self.book.id,
|
||||||
|
'privacy': 'public',
|
||||||
|
})
|
||||||
|
request = self.factory.get('', form.data)
|
||||||
|
request.user = self.local_user
|
||||||
|
|
||||||
|
with patch('bookwyrm.broadcast.broadcast_task.delay'):
|
||||||
|
view(request, 'comment')
|
||||||
|
status = models.Status.objects.get()
|
||||||
|
self.assertEqual(list(status.mention_users.all()), [user])
|
||||||
|
self.assertEqual(models.Notification.objects.get().user, user)
|
||||||
|
self.assertEqual(
|
||||||
|
status.content,
|
||||||
|
'<p>hi <a href="%s">@rat</a></p>' % user.remote_id)
|
||||||
|
|
||||||
|
def test_handle_status_reply_with_mentions(self):
|
||||||
|
''' reply to a post with an @mention'ed user '''
|
||||||
|
view = views.CreateStatus.as_view()
|
||||||
|
user = models.User.objects.create_user(
|
||||||
|
'rat', 'rat@rat.com', 'password',
|
||||||
|
local=True, localname='rat')
|
||||||
|
form = forms.CommentForm({
|
||||||
|
'content': 'hi @rat@example.com',
|
||||||
|
'user': self.local_user.id,
|
||||||
|
'book': self.book.id,
|
||||||
|
'privacy': 'public',
|
||||||
|
})
|
||||||
|
request = self.factory.get('', form.data)
|
||||||
|
request.user = self.local_user
|
||||||
|
|
||||||
|
with patch('bookwyrm.broadcast.broadcast_task.delay'):
|
||||||
|
view(request, 'comment')
|
||||||
|
status = models.Status.objects.get()
|
||||||
|
|
||||||
|
form = forms.ReplyForm({
|
||||||
|
'content': 'right',
|
||||||
|
'user': user,
|
||||||
|
'privacy': 'public',
|
||||||
|
'reply_parent': status.id
|
||||||
|
})
|
||||||
|
request = self.factory.get('', form.data)
|
||||||
|
request.user = self.local_user
|
||||||
|
with patch('bookwyrm.broadcast.broadcast_task.delay'):
|
||||||
|
view(request, 'comment')
|
||||||
|
|
||||||
|
reply = models.Status.replies(status).first()
|
||||||
|
self.assertEqual(reply.content, '<p>right</p>')
|
||||||
|
self.assertEqual(reply.user, user)
|
||||||
|
self.assertTrue(self.remote_user in reply.mention_users.all())
|
||||||
|
self.assertTrue(self.local_user in reply.mention_users.all())
|
||||||
|
|
||||||
|
def test_find_mentions(self):
|
||||||
|
''' detect and look up @ mentions of users '''
|
||||||
|
user = models.User.objects.create_user(
|
||||||
|
'nutria@%s' % DOMAIN, 'nutria@nutria.com', 'password',
|
||||||
|
local=True, localname='nutria')
|
||||||
|
self.assertEqual(user.username, 'nutria@%s' % DOMAIN)
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
list(views.status.find_mentions('@nutria'))[0],
|
||||||
|
('@nutria', user)
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
list(views.status.find_mentions('leading text @nutria'))[0],
|
||||||
|
('@nutria', user)
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
list(views.status.find_mentions(
|
||||||
|
'leading @nutria trailing text'))[0],
|
||||||
|
('@nutria', user)
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
list(views.status.find_mentions(
|
||||||
|
'@rat@example.com'))[0],
|
||||||
|
('@rat@example.com', self.remote_user)
|
||||||
|
)
|
||||||
|
|
||||||
|
multiple = list(views.status.find_mentions(
|
||||||
|
'@nutria and @rat@example.com'))
|
||||||
|
self.assertEqual(multiple[0], ('@nutria', user))
|
||||||
|
self.assertEqual(multiple[1], ('@rat@example.com', self.remote_user))
|
||||||
|
|
||||||
|
with patch('bookwyrm.views.status.handle_remote_webfinger') as rw:
|
||||||
|
rw.return_value = self.local_user
|
||||||
|
self.assertEqual(
|
||||||
|
list(views.status.find_mentions('@beep@beep.com'))[0],
|
||||||
|
('@beep@beep.com', self.local_user)
|
||||||
|
)
|
||||||
|
with patch('bookwyrm.views.status.handle_remote_webfinger') as rw:
|
||||||
|
rw.return_value = None
|
||||||
|
self.assertEqual(list(views.status.find_mentions(
|
||||||
|
'@beep@beep.com')), [])
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
list(views.status.find_mentions('@nutria@%s' % DOMAIN))[0],
|
||||||
|
('@nutria@%s' % DOMAIN, user)
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_format_links(self):
|
||||||
|
''' find and format urls into a tags '''
|
||||||
|
url = 'http://www.fish.com/'
|
||||||
|
self.assertEqual(
|
||||||
|
views.status.format_links(url),
|
||||||
|
'<a href="%s">www.fish.com/</a>' % url)
|
||||||
|
self.assertEqual(
|
||||||
|
views.status.format_links('(%s)' % url),
|
||||||
|
'(<a href="%s">www.fish.com/</a>)' % url)
|
||||||
|
url = 'https://archive.org/details/dli.granth.72113/page/n25/mode/2up'
|
||||||
|
self.assertEqual(
|
||||||
|
views.status.format_links(url),
|
||||||
|
'<a href="%s">' \
|
||||||
|
'archive.org/details/dli.granth.72113/page/n25/mode/2up</a>' \
|
||||||
|
% url)
|
||||||
|
url = 'https://openlibrary.org/search' \
|
||||||
|
'?q=arkady+strugatsky&mode=everything'
|
||||||
|
self.assertEqual(
|
||||||
|
views.status.format_links(url),
|
||||||
|
'<a href="%s">openlibrary.org/search' \
|
||||||
|
'?q=arkady+strugatsky&mode=everything</a>' % url)
|
||||||
|
|
||||||
|
|
||||||
|
def test_to_markdown(self):
|
||||||
|
''' this is mostly handled in other places, but nonetheless '''
|
||||||
|
text = '_hi_ and http://fish.com is <marquee>rad</marquee>'
|
||||||
|
result = views.status.to_markdown(text)
|
||||||
|
self.assertEqual(
|
||||||
|
result,
|
||||||
|
'<p><em>hi</em> and <a href="http://fish.com">fish.com</a> ' \
|
||||||
|
'is rad</p>')
|
|
@ -54,9 +54,11 @@ class CreateStatus(View):
|
||||||
''' get posting '''
|
''' get posting '''
|
||||||
def post(self, request, status_type):
|
def post(self, request, status_type):
|
||||||
''' create status of whatever type '''
|
''' create status of whatever type '''
|
||||||
if status_type not in models.status_models:
|
status_type = status_type[0].upper() + status_type[1:]
|
||||||
|
try:
|
||||||
|
form = getattr(forms, '%sForm' % status_type)(request.POST)
|
||||||
|
except AttributeError:
|
||||||
return HttpResponseBadRequest()
|
return HttpResponseBadRequest()
|
||||||
form = forms.get_attr(status_type)(request.POST)
|
|
||||||
if not form.is_valid():
|
if not form.is_valid():
|
||||||
return redirect(request.headers.get('Referer', '/'))
|
return redirect(request.headers.get('Referer', '/'))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue