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
|
import random
import string
from flask import render_template
from flask import render_template_string
from flask_caching import make_template_fragment_key
def test_jinjaext_cache(app, cache):
somevar = "".join([random.choice(string.ascii_letters) for x in range(6)])
testkeys = [
make_template_fragment_key("fragment1"),
make_template_fragment_key("fragment1", vary_on=["key1"]),
make_template_fragment_key("fragment1", vary_on=["key1", somevar]),
]
delkey = make_template_fragment_key("fragment2")
with app.test_request_context():
#: Test if elements are cached
render_template("test_template.html", somevar=somevar, timeout=60)
for k in testkeys:
assert cache.get(k) == somevar
assert cache.get(delkey) == somevar
#: Test timeout=del to delete key
render_template("test_template.html", somevar=somevar, timeout="del")
for k in testkeys:
assert cache.get(k) == somevar
assert cache.get(delkey) is None
#: Test rendering templates from strings
output = render_template_string(
"""{% cache 60, "fragment3" %}{{somevar}}{% endcache %}""",
somevar=somevar,
)
assert cache.get(make_template_fragment_key("fragment3")) == somevar
assert output == somevar
#: Test backwards compatibility
output = render_template_string(
"""{% cache 30 %}{{somevar}}{% endcache %}""", somevar=somevar
)
assert cache.get(make_template_fragment_key("None1")) == somevar
assert output == somevar
output = render_template_string(
"""{% cache 30, "fragment4", "fragment5"%}{{somevar}}{% endcache %}""",
somevar=somevar,
)
k = make_template_fragment_key("fragment4", vary_on=["fragment5"])
assert cache.get(k) == somevar
assert output == somevar
|