1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
from minijinja import Environment, safe, pass_state
def test_func_state():
env = Environment()
@pass_state
def my_func(state):
assert state.name == "template-name"
assert state.auto_escape is None
assert state.current_block == "foo"
assert state.lookup("bar") == 23
assert state.lookup("aha") is None
assert state.lookup("my_func") is my_func
assert state.env is env
return 42
rv = env.render_str(
"{% block foo %}{{ my_func() }}{% endblock %}",
"template-name",
my_func=my_func,
bar=23,
)
assert rv == "42"
def test_global_func_state():
env = Environment()
@pass_state
def my_func(state):
assert state.name == "template-name"
assert state.auto_escape is None
assert state.current_block == "foo"
assert state.lookup("bar") == 23
assert state.lookup("aha") is None
assert state.env is env
return 42
env.add_global("my_func", my_func)
rv = env.render_str(
"{% block foo %}{{ my_func() }}{% endblock %}",
"template-name",
bar=23,
)
assert rv == "42"
def test_filter_state():
env = Environment()
@pass_state
def my_filter(state, value):
assert state.name == "template-name"
assert state.auto_escape is None
assert state.current_block == "foo"
assert state.lookup("bar") == 23
assert state.lookup("aha") is None
assert state.env is env
return value
env.add_filter("myfilter", my_filter)
rv = env.render_str(
"{% block foo %}{{ 42|myfilter }}{% endblock %}",
"template-name",
bar=23,
)
assert rv == "42"
def test_test_state():
env = Environment()
@pass_state
def my_test(state, value):
assert state.name == "template-name"
assert state.auto_escape is None
assert state.current_block == "foo"
assert state.lookup("bar") == 23
assert state.lookup("aha") is None
assert state.env is env
return True
env.add_test("mytest", my_test)
rv = env.render_str(
"{% block foo %}{{ 42 is mytest }}{% endblock %}",
"template-name",
bar=23,
)
assert rv == "true"
|