fix(founding-wizard): nested IF-Bloecke korrekt aufloesen (innermost-first)
CI / branch-name (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / iace-gt-coverage (push) Has been skipped
CI / test-python-backend (push) Successful in 42s
CI / detect-changes (push) Successful in 10s
CI / secret-scan (push) Has been skipped
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / validate-canonical-controls (push) Successful in 13s
CI / loc-budget (push) Successful in 16s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / nodejs-build (push) Has been skipped
CI / test-go (push) Has been skipped
CI / test-python-document-crawler (push) Has been skipped
CI / test-python-dsms-gateway (push) Has been skipped
CI / branch-name (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / iace-gt-coverage (push) Has been skipped
CI / test-python-backend (push) Successful in 42s
CI / detect-changes (push) Successful in 10s
CI / secret-scan (push) Has been skipped
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / validate-canonical-controls (push) Successful in 13s
CI / loc-budget (push) Successful in 16s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / nodejs-build (push) Has been skipped
CI / test-go (push) Has been skipped
CI / test-python-document-crawler (push) Has been skipped
CI / test-python-dsms-gateway (push) Has been skipped
This commit is contained in:
@@ -68,6 +68,43 @@ class TestTemplateRenderer:
|
||||
result = render_template(template, {"A": True, "B": True})
|
||||
assert result == "A-on+B-on"
|
||||
|
||||
def test_nested_outer_false_inner_true(self):
|
||||
"""Bug-Regression: nested IF in outer-false darf nicht den falschen close-tag matchen."""
|
||||
template = "{{#IF OUTER}}outer-{{#IF INNER}}inner{{/IF}}-end{{/IF}}AFTER"
|
||||
result = render_template(template, {"OUTER": False, "INNER": True})
|
||||
assert result == "AFTER"
|
||||
assert "{{/IF}}" not in result
|
||||
assert "outer" not in result
|
||||
|
||||
def test_consecutive_if_blocks(self):
|
||||
"""Bug-Regression: 2 aufeinanderfolgende IF-Bloecke."""
|
||||
template = "{{#IF A}}a{{/IF}}{{#IF B}}b{{/IF}}"
|
||||
result = render_template(template, {"A": False, "B": True})
|
||||
assert result == "b"
|
||||
assert "{{" not in result
|
||||
|
||||
def test_orphan_if_tag_removed(self):
|
||||
"""Orphan {{/IF}} aufraeumen."""
|
||||
template = "Text{{/IF}}mehr"
|
||||
result = render_template(template, {})
|
||||
assert "{{/IF}}" not in result
|
||||
|
||||
def test_real_go_gf_pattern(self):
|
||||
"""Realistic Pattern aus GO-GF Template."""
|
||||
template = (
|
||||
"{{#IF HAS_CEO_DESIGNATION}}Mit CEO {{CEO_NAME}}{{#IF HAS_SHA}} und SHA{{/IF}}.{{/IF}}"
|
||||
"{{#IF NOT HAS_CEO_DESIGNATION}}Kein CEO. Eskalation nach § 6.{{/IF}}"
|
||||
)
|
||||
# Fall: kein CEO, kein SHA
|
||||
r1 = render_template(template, {"HAS_CEO_DESIGNATION": False, "HAS_SHA": False})
|
||||
assert r1 == "Kein CEO. Eskalation nach § 6."
|
||||
# Fall: CEO + SHA
|
||||
r2 = render_template(template, {"HAS_CEO_DESIGNATION": True, "HAS_SHA": True, "CEO_NAME": "Benjamin"})
|
||||
assert r2 == "Mit CEO Benjamin und SHA."
|
||||
# Fall: CEO ohne SHA
|
||||
r3 = render_template(template, {"HAS_CEO_DESIGNATION": True, "HAS_SHA": False, "CEO_NAME": "Benjamin"})
|
||||
assert r3 == "Mit CEO Benjamin."
|
||||
|
||||
def test_find_undefined_placeholders(self):
|
||||
template = "{{X}} {{Y}} {{#IF Z}}.{{/IF}}"
|
||||
undefined = find_undefined_placeholders(template, {"X": "1"})
|
||||
|
||||
Reference in New Issue
Block a user