summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDavid Lord <davidism@gmail.com>2021-06-14 18:57:28 +0300
committerDavid Lord <davidism@gmail.com>2022-03-08 06:55:05 -0800
commite690f7c5962aea8de43cd09689dcca12bcf29014 (patch)
tree554c8d0fb61dac24efdce10f21e31d6681367b0e /tests
parent20eb7f5e33120f1717b78bdf85540ab75631187a (diff)
downloadjinja2-e690f7c5962aea8de43cd09689dcca12bcf29014.tar.gz
add case_sensitive parameter groupby filter
Co-authored-by: Yuri Sukhov <yuri.sukhov@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/test_async_filters.py20
-rw-r--r--tests/test_filters.py19
2 files changed, 39 insertions, 0 deletions
diff --git a/tests/test_async_filters.py b/tests/test_async_filters.py
index 5d4f332..f5b2627 100644
--- a/tests/test_async_filters.py
+++ b/tests/test_async_filters.py
@@ -57,6 +57,26 @@ def test_groupby(env_async, items):
]
+@pytest.mark.parametrize(
+ ("case_sensitive", "expect"),
+ [
+ (False, "a: 1, 3\nb: 2\n"),
+ (True, "A: 3\na: 1\nb: 2\n"),
+ ],
+)
+def test_groupby_case(env_async, case_sensitive, expect):
+ tmpl = env_async.from_string(
+ "{% for k, vs in data|groupby('k', case_sensitive=cs) %}"
+ "{{ k }}: {{ vs|join(', ', attribute='v') }}\n"
+ "{% endfor %}"
+ )
+ out = tmpl.render(
+ data=[{"k": "a", "v": 1}, {"k": "b", "v": 2}, {"k": "A", "v": 3}],
+ cs=case_sensitive,
+ )
+ assert out == expect
+
+
@mark_dualiter("items", lambda: [("a", 1), ("a", 2), ("b", 1)])
def test_groupby_tuple_index(env_async, items):
tmpl = env_async.from_string(
diff --git a/tests/test_filters.py b/tests/test_filters.py
index 43ddf59..73f0f0b 100644
--- a/tests/test_filters.py
+++ b/tests/test_filters.py
@@ -619,6 +619,25 @@ class TestFilter:
)
assert out == "NY: emma, john\nWA: smith\n"
+ @pytest.mark.parametrize(
+ ("case_sensitive", "expect"),
+ [
+ (False, "a: 1, 3\nb: 2\n"),
+ (True, "A: 3\na: 1\nb: 2\n"),
+ ],
+ )
+ def test_groupby_case(self, env, case_sensitive, expect):
+ tmpl = env.from_string(
+ "{% for k, vs in data|groupby('k', case_sensitive=cs) %}"
+ "{{ k }}: {{ vs|join(', ', attribute='v') }}\n"
+ "{% endfor %}"
+ )
+ out = tmpl.render(
+ data=[{"k": "a", "v": 1}, {"k": "b", "v": 2}, {"k": "A", "v": 3}],
+ cs=case_sensitive,
+ )
+ assert out == expect
+
def test_filtertag(self, env):
tmpl = env.from_string(
"{% filter upper|replace('FOO', 'foo') %}foobar{% endfilter %}"