| require 'test_helper' |
| |
| class CaptureTest < Minitest::Test |
| include Liquid |
| |
| def test_captures_block_content_in_variable |
| assert_template_result("test string", "{% capture 'var' %}test string{% endcapture %}{{var}}", {}) |
| end |
| |
| def test_capture_with_hyphen_in_variable_name |
| template_source = <<-END_TEMPLATE |
| {% capture this-thing %}Print this-thing{% endcapture %} |
| {{ this-thing }} |
| END_TEMPLATE |
| template = Template.parse(template_source) |
| rendered = template.render! |
| assert_equal "Print this-thing", rendered.strip |
| end |
| |
| def test_capture_to_variable_from_outer_scope_if_existing |
| template_source = <<-END_TEMPLATE |
| {% assign var = '' %} |
| {% if true %} |
| {% capture var %}first-block-string{% endcapture %} |
| {% endif %} |
| {% if true %} |
| {% capture var %}test-string{% endcapture %} |
| {% endif %} |
| {{var}} |
| END_TEMPLATE |
| template = Template.parse(template_source) |
| rendered = template.render! |
| assert_equal "test-string", rendered.gsub(/\s/, '') |
| end |
| |
| def test_assigning_from_capture |
| template_source = <<-END_TEMPLATE |
| {% assign first = '' %} |
| {% assign second = '' %} |
| {% for number in (1..3) %} |
| {% capture first %}{{number}}{% endcapture %} |
| {% assign second = first %} |
| {% endfor %} |
| {{ first }}-{{ second }} |
| END_TEMPLATE |
| template = Template.parse(template_source) |
| rendered = template.render! |
| assert_equal "3-3", rendered.gsub(/\s/, '') |
| end |
| end # CaptureTest |