]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Restructured tests for async filters
authorArmin Ronacher <armin.ronacher@active-4.com>
Wed, 28 Dec 2016 22:44:36 +0000 (23:44 +0100)
committerArmin Ronacher <armin.ronacher@active-4.com>
Wed, 28 Dec 2016 22:44:36 +0000 (23:44 +0100)
tests/test_asyncfilters.py

index 5133f9cba5ef82eb91bca202c8c01be3d8d5155e..1b5aad85870f01d6f62a6b7d1d96797455a6d3f5 100644 (file)
@@ -7,30 +7,39 @@ async def make_aiter(iter):
         yield item
 
 
+def mark_dualiter(parameter, factory):
+    def decorator(f):
+        return pytest.mark.parametrize(parameter, [
+            lambda: factory(),
+            lambda: make_aiter(factory()),
+        ])(f)
+    return decorator
+
+
 @pytest.fixture
 def env_async():
     return Environment(enable_async=True)
 
 
-@pytest.mark.parametrize('foo', [
-    lambda: range(10),
-    lambda: make_aiter(range(10)),
-])
+@mark_dualiter('foo', lambda: range(10))
 def test_first(env_async, foo):
     tmpl = env_async.from_string('{{ foo()|first }}')
     out = tmpl.render(foo=foo)
     assert out == '0'
 
 
-def test_groupby(env_async):
+@mark_dualiter('items', lambda: [
+    {'foo': 1, 'bar': 2},
+    {'foo': 2, 'bar': 3},
+    {'foo': 1, 'bar': 1},
+    {'foo': 3, 'bar': 4}
+])
+def test_groupby(env_async, items):
     tmpl = env_async.from_string('''
-    {%- for grouper, list in [{'foo': 1, 'bar': 2},
-                              {'foo': 2, 'bar': 3},
-                              {'foo': 1, 'bar': 1},
-                              {'foo': 3, 'bar': 4}]|groupby('foo') -%}
+    {%- for grouper, list in items()|groupby('foo') -%}
         {{ grouper }}{% for x in list %}: {{ x.foo }}, {{ x.bar }}{% endfor %}|
     {%- endfor %}''')
-    assert tmpl.render().split('|') == [
+    assert tmpl.render(items=items).split('|') == [
         "1: 1, 2: 1, 1",
         "2: 2, 3",
         "3: 3, 4",
@@ -38,12 +47,13 @@ def test_groupby(env_async):
     ]
 
 
-def test_groupby_tuple_index(env_async):
+@mark_dualiter('items', lambda: [('a', 1), ('a', 2), ('b', 1)])
+def test_groupby_tuple_index(env_async, items):
     tmpl = env_async.from_string('''
-    {%- for grouper, list in [('a', 1), ('a', 2), ('b', 1)]|groupby(0) -%}
+    {%- for grouper, list in items()|groupby(0) -%}
         {{ grouper }}{% for x in list %}:{{ x.1 }}{% endfor %}|
     {%- endfor %}''')
-    assert tmpl.render() == 'a:1:2|b:1|'
+    assert tmpl.render(items=items) == 'a:1:2|b:1|'
 
 
 def make_articles():
@@ -66,10 +76,7 @@ def make_articles():
     ]
 
 
-@pytest.mark.parametrize('articles', [
-    make_articles,
-    lambda: make_aiter(make_articles()),
-])
+@mark_dualiter('articles', make_articles)
 def test_groupby_multidot(env_async, articles):
     tmpl = env_async.from_string('''
     {%- for year, list in articles()|groupby('date.year') -%}