Skip to content

Commit

Permalink
test ToolbarMiddleware
Browse files Browse the repository at this point in the history
  • Loading branch information
antonagestam committed Apr 3, 2016
1 parent 4a61fc5 commit 4d54d00
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 17 deletions.
2 changes: 1 addition & 1 deletion runtests.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
'text.middleware.TextMiddleware',
'text.middleware.ToolbarMiddleware',
),
'ROOT_URLCONF': 'text.urls',
'ROOT_URLCONF': 'text.tests.urls',
})

try:
Expand Down
28 changes: 13 additions & 15 deletions text/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,19 +64,17 @@ def process_response(self, request, response):
content = force_text(
response.content, encoding=django_settings.DEFAULT_CHARSET)
bits = re.split(pattern, content, flags=re.IGNORECASE)

if len(bits) > 1:
toolbar = get_template('text/text_toolbar.html')
form = TextForm(prefix=settings.TOOLBAR_FORM_PREFIX)
context = {
'texts': texts,
'language': get_language(),
'form': form,
'inline_wrapper_class': settings.INLINE_WRAPPER_CLASS,
}
bits[-2] += render_template(
toolbar, context=context, request=request)
response.content = insert_before.join(bits)
if response.get('Content-Length', None):
response['Content-Length'] = len(response.content)
if len(bits) < 2:
return response
toolbar = get_template('text/text_toolbar.html')
form = TextForm(prefix=settings.TOOLBAR_FORM_PREFIX)
context = {
'texts': texts,
'language': get_language(),
'form': form,
'inline_wrapper_class': settings.INLINE_WRAPPER_CLASS,
}
bits[-2] += render_template(
toolbar, context=context, request=request)
response.content = insert_before.join(bits)
return response
40 changes: 39 additions & 1 deletion text/tests/test_middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,14 @@
from django.template.base import Context, Template
from django.template.response import SimpleTemplateResponse
from django.utils.six import b
from django.utils.encoding import force_text
from django.contrib.auth.models import User

from mock import patch

from ..middleware import build_context, create_text, TextMiddleware, BackendTemplate
from ..compat import BackendTemplate
from ..middleware import (
build_context, create_text, TextMiddleware, ToolbarMiddleware)
from ..models import Text
from ..conf import settings

Expand Down Expand Up @@ -86,3 +90,37 @@ def test_db(self):
text.save()
rendered = self.process_template_response(text.name, default='this is the default')
self.assertEqual(rendered.content, b(text.render()))


class TestToolbarMiddleware(TestCase):
text_template = (
'<body>{% load text %}{% text "a_node" "html" %}</body>')
non_text_template = '<body></body>'

def process_template_response(self, string_template, user=None):
request = HttpRequest()
request.user = user
context = Context({'request': request})
template = BackendTemplate(Template(string_template).render(context))
response = SimpleTemplateResponse(template, context)
response.content = string_template
mw = ToolbarMiddleware()
return mw.process_response(request, response).render()

def test_process_response(self):
su = User.objects.create_superuser('adm', 'adm@example.com', 'pw')

# unauthenticated
resp = self.process_template_response(self.text_template)
self.assertNotIn(
'djtext_toolbar', force_text(resp.content, encoding='utf-8'))

# authenticated, no texts
resp = self.process_template_response(self.non_text_template, su)
self.assertNotIn(
'djtext_toolbar', force_text(resp.content, encoding='utf-8'))

# authenticated
resp = self.process_template_response(self.text_template, su)
self.assertIn(
'djtext_toolbar', force_text(resp.content, encoding='utf-8'))
8 changes: 8 additions & 0 deletions text/tests/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from django.conf.urls import url, include

from text.urls import urlpatterns as django_text_patterns

urlpatterns = [
url(r'^django_text/',
include(django_text_patterns, namespace='django_text')),
]

0 comments on commit 4d54d00

Please sign in to comment.