"""Tests for scripts/_email_plaintext.html_to_text (campaign altbody generation). Run: python3 -m pytest scripts/test_email_plaintext.py or: python3 scripts/test_email_plaintext.py """ from __future__ import annotations import os import sys sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from scripts._email_plaintext import html_to_text # noqa: E402 def test_empty_input(): assert html_to_text("") == "" assert html_to_text(None) == "" # type: ignore[arg-type] def test_strips_script_style_head(): html = "
Hello {{ .Subscriber.Attribs.company }}
" 'unsubscribe' ) out = html_to_text(html) assert "{{ .Subscriber.Attribs.company }}" in out assert "{{ UnsubscribeURL }}" in out def test_lists_become_dashes(): out = html_to_text("A
| C |
Tom & Jerry's
") def test_collapses_blank_lines(): out = html_to_text("A
B
") assert "\n\n\n" not in out if __name__ == "__main__": fns = [v for k, v in sorted(globals().items()) if k.startswith("test_")] for fn in fns: fn() print(f"PASS {fn.__name__}") print(f"\nAll {len(fns)} tests passed.")