summaryrefslogtreecommitdiffstats
path: root/tests/test_template_shortcodes.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_template_shortcodes.py')
-rw-r--r--tests/test_template_shortcodes.py86
1 files changed, 86 insertions, 0 deletions
diff --git a/tests/test_template_shortcodes.py b/tests/test_template_shortcodes.py
new file mode 100644
index 0000000..a1d3a91
--- /dev/null
+++ b/tests/test_template_shortcodes.py
@@ -0,0 +1,86 @@
+# -*- coding: utf-8 -*-
+# vim: set wrap textwidth=100
+"""Test template-based shortcodes."""
+
+from __future__ import unicode_literals
+
+import pytest
+from nikola import Nikola
+
+
+class ShortcodeFakeSite(Nikola):
+ def _get_template_system(self):
+ if self._template_system is None:
+ # Load template plugin
+ self._template_system = self.plugin_manager.getPluginByName(
+ 'jinja', "TemplateSystem").plugin_object
+ self._template_system.set_directories('.', 'cache')
+ self._template_system.set_site(self)
+
+ return self._template_system
+
+ template_system = property(_get_template_system)
+
+
+@pytest.fixture(scope="module")
+def fakesite():
+ s = ShortcodeFakeSite()
+ s.init_plugins()
+ s._template_system = None
+ return s
+
+
+def test_mixedargs(fakesite):
+ TEST_TMPL = """
+arg1: {{ _args[0] }}
+arg2: {{ _args[1] }}
+kwarg1: {{ kwarg1 }}
+kwarg2: {{ kwarg2 }}
+"""
+
+ fakesite.shortcode_registry['test1'] = \
+ fakesite._make_renderfunc(TEST_TMPL)
+ fakesite.shortcode_registry['test2'] = \
+ fakesite._make_renderfunc('Something completely different')
+
+ res = fakesite.apply_shortcodes(
+ '{{% test1 kwarg1=spamm arg1 kwarg2=foo,bar arg2 %}}')
+
+ assert res.strip() == """
+arg1: arg1
+arg2: arg2
+kwarg1: spamm
+kwarg2: foo,bar""".strip()
+
+
+def test_onearg(fakesite):
+ fakesite.shortcode_registry['test1'] = \
+ fakesite._make_renderfunc('arg={{ _args[0] }}')
+
+ assert fakesite.apply_shortcodes('{{% test1 onearg %}}') == 'arg=onearg'
+ assert fakesite.apply_shortcodes('{{% test1 "one two" %}}') == 'arg=one two'
+
+
+def test_kwarg(fakesite):
+ fakesite.shortcode_registry['test1'] = \
+ fakesite._make_renderfunc('foo={{ foo }}')
+
+ res = fakesite.apply_shortcodes('{{% test1 foo=bar %}}')
+ assert res == 'foo=bar'
+ res = fakesite.apply_shortcodes('{{% test1 foo="bar baz" %}}')
+ assert res == 'foo=bar baz'
+ res = fakesite.apply_shortcodes('{{% test1 foo="bar baz" spamm=ham %}}')
+ assert res == 'foo=bar baz'
+
+
+def test_data(fakesite):
+ fakesite.shortcode_registry['test1'] = \
+ fakesite._make_renderfunc('data={{ data }}')
+
+ res = fakesite.apply_shortcodes('{{% test1 %}}spamm spamm{{% /test1 %}}')
+ assert res == 'data=spamm spamm'
+ res = fakesite.apply_shortcodes('{{% test1 spamm %}}')
+ assert res == 'data='
+ # surprise!
+ res = fakesite.apply_shortcodes('{{% test1 data=dummy %}}')
+ assert res == 'data='