adds tests for templatetag
This commit is contained in:
committed by
Michael van Tellingen
parent
6587d0fd56
commit
82f2dd460e
@@ -16,7 +16,7 @@ def do_segment(parser, token):
|
|||||||
|
|
||||||
# If no segment is provided this block will raise an error
|
# If no segment is provided this block will raise an error
|
||||||
if set(kwargs.keys()) != {'name'}:
|
if set(kwargs.keys()) != {'name'}:
|
||||||
usage = '{% {tag_name} name="segmentname" %} ... {% end{tag_name} %}'.format(tag_name=tag_name)
|
usage = '{% segment name="segmentname" %} ... {% endsegment %}'
|
||||||
raise TemplateSyntaxError("Usage: %s" % usage)
|
raise TemplateSyntaxError("Usage: %s" % usage)
|
||||||
|
|
||||||
nodelist = parser.parse(('endsegment',))
|
nodelist = parser.parse(('endsegment',))
|
||||||
|
48
tests/unit/test_templatetags.py
Normal file
48
tests/unit/test_templatetags.py
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
|
import time
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from django.template import TemplateSyntaxError
|
||||||
|
from wagtail_factories import SiteFactory
|
||||||
|
|
||||||
|
from tests.factories.segment import SegmentFactory
|
||||||
|
from tests.factories.rule import TimeRuleFactory
|
||||||
|
from tests.utils import render_template, add_session_to_request
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_segment_template_block(rf):
|
||||||
|
site = SiteFactory(is_default_site=True)
|
||||||
|
segment = SegmentFactory(name='test')
|
||||||
|
|
||||||
|
request = rf.get('/')
|
||||||
|
|
||||||
|
add_session_to_request(request)
|
||||||
|
|
||||||
|
request.session['segments'] = [{
|
||||||
|
"encoded_name": 'test',
|
||||||
|
"id": 1,
|
||||||
|
"timestamp": int(time.time()),
|
||||||
|
"persistent": False
|
||||||
|
}]
|
||||||
|
|
||||||
|
content = render_template("""
|
||||||
|
{% load wagtail_personalisation_tags %}
|
||||||
|
{% segment name='test' %}Test{% endsegment %}
|
||||||
|
""", request=request).strip()
|
||||||
|
|
||||||
|
assert content == "Test"
|
||||||
|
|
||||||
|
content = render_template("""
|
||||||
|
{% load wagtail_personalisation_tags %}
|
||||||
|
{% segment name='test2' %}Test{% endsegment %}
|
||||||
|
""", request=request).strip()
|
||||||
|
|
||||||
|
assert content == ""
|
||||||
|
|
||||||
|
with pytest.raises(TemplateSyntaxError):
|
||||||
|
content = render_template("""
|
||||||
|
{% load wagtail_personalisation_tags %}
|
||||||
|
{% segment wrongname='test2' %}Test{% endsegment %}
|
||||||
|
""", request=request).strip()
|
14
tests/utils.py
Normal file
14
tests/utils.py
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
from django.template import engines
|
||||||
|
from django.contrib.sessions.middleware import SessionMiddleware
|
||||||
|
|
||||||
|
|
||||||
|
def render_template(value, **context):
|
||||||
|
template = engines['django'].from_string(value)
|
||||||
|
request = context.pop('request', None)
|
||||||
|
return template.render(context, request)
|
||||||
|
|
||||||
|
|
||||||
|
def add_session_to_request(request):
|
||||||
|
middleware = SessionMiddleware()
|
||||||
|
middleware.process_request(request)
|
||||||
|
request.session.save()
|
Reference in New Issue
Block a user