8

adds tests for templatetag

This commit is contained in:
blurrah
2017-05-31 16:14:29 +02:00
committed by Michael van Tellingen
parent 6587d0fd56
commit 82f2dd460e
3 changed files with 63 additions and 1 deletions

View File

@@ -16,7 +16,7 @@ def do_segment(parser, token):
# If no segment is provided this block will raise an error
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)
nodelist = parser.parse(('endsegment',))

View 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
View 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()