mirror of
https://github.com/django-components/django-components.git
synced 2025-08-03 13:58:16 +00:00
refactor: move kwargs resolution to render-time + cleanup (#594)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
83dcc3fe80
commit
899b9a2738
13 changed files with 448 additions and 371 deletions
60
tests/test_expression.py
Normal file
60
tests/test_expression.py
Normal file
|
@ -0,0 +1,60 @@
|
|||
"""Catch-all for tests that use template tags and don't fit other files"""
|
||||
|
||||
from typing import Dict
|
||||
|
||||
from django.template import Context, Template
|
||||
from django.template.base import Parser
|
||||
|
||||
from django_components.expression import safe_resolve_dict, safe_resolve_list
|
||||
|
||||
from .django_test_setup import setup_test_config
|
||||
from .testutils import BaseTestCase
|
||||
|
||||
setup_test_config({"autodiscover": False})
|
||||
|
||||
|
||||
engine = Template("").engine
|
||||
default_parser = Parser("", engine.template_libraries, engine.template_builtins)
|
||||
|
||||
|
||||
def make_context(d: Dict):
|
||||
ctx = Context(d)
|
||||
ctx.template = Template("")
|
||||
return ctx
|
||||
|
||||
|
||||
#######################
|
||||
# TESTS
|
||||
#######################
|
||||
|
||||
|
||||
class ResolveTests(BaseTestCase):
|
||||
def test_safe_resolve(self):
|
||||
expr = default_parser.compile_filter("var_abc")
|
||||
|
||||
ctx = make_context({"var_abc": 123})
|
||||
self.assertEqual(
|
||||
expr.resolve(ctx),
|
||||
123,
|
||||
)
|
||||
|
||||
ctx2 = make_context({"var_xyz": 123})
|
||||
self.assertEqual(expr.resolve(ctx2), "")
|
||||
|
||||
def test_safe_resolve_list(self):
|
||||
exprs = [default_parser.compile_filter(f"var_{char}") for char in "abc"]
|
||||
|
||||
ctx = make_context({"var_a": 123, "var_b": [{}, {}]})
|
||||
self.assertEqual(
|
||||
safe_resolve_list(ctx, exprs),
|
||||
[123, [{}, {}], ""],
|
||||
)
|
||||
|
||||
def test_safe_resolve_dict(self):
|
||||
exprs = {char: default_parser.compile_filter(f"var_{char}") for char in "abc"}
|
||||
|
||||
ctx = make_context({"var_a": 123, "var_b": [{}, {}]})
|
||||
self.assertEqual(
|
||||
safe_resolve_dict(ctx, exprs),
|
||||
{"a": 123, "b": [{}, {}], "c": ""},
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue