diff --git a/src/wagtail_personalisation/templatetags/wagtail_personalisation_tags.py b/src/wagtail_personalisation/templatetags/wagtail_personalisation_tags.py index ac3b1f5..19875db 100644 --- a/src/wagtail_personalisation/templatetags/wagtail_personalisation_tags.py +++ b/src/wagtail_personalisation/templatetags/wagtail_personalisation_tags.py @@ -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',)) diff --git a/tests/unit/test_templatetags.py b/tests/unit/test_templatetags.py new file mode 100644 index 0000000..e847ff2 --- /dev/null +++ b/tests/unit/test_templatetags.py @@ -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() diff --git a/tests/utils.py b/tests/utils.py new file mode 100644 index 0000000..6d048ee --- /dev/null +++ b/tests/utils.py @@ -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() \ No newline at end of file