From 1d6ce47347b1804141c12efe1cb4e148482f2b9e Mon Sep 17 00:00:00 2001 From: jacklinke Date: Mon, 21 Oct 2024 23:25:15 -0400 Subject: [PATCH] Get tests working --- example_project/conftest.py | 11 ++ .../templates/templated_email/test_message.md | 10 ++ .../test_django_templated_email_md.py | 141 +++++++++++++++++- 3 files changed, 158 insertions(+), 4 deletions(-) create mode 100644 example_project/conftest.py create mode 100644 example_project/example/templates/templated_email/test_message.md diff --git a/example_project/conftest.py b/example_project/conftest.py new file mode 100644 index 0000000..d5db8c4 --- /dev/null +++ b/example_project/conftest.py @@ -0,0 +1,11 @@ +"""Pytest fixtures for templated_email_md tests.""" + +import pytest + +from templated_email_md.backend import MarkdownTemplateBackend + + +@pytest.fixture +def backend(): + """Create a MarkdownTemplateBackend instance.""" + return MarkdownTemplateBackend() diff --git a/example_project/example/templates/templated_email/test_message.md b/example_project/example/templates/templated_email/test_message.md new file mode 100644 index 0000000..8e17bc0 --- /dev/null +++ b/example_project/example/templates/templated_email/test_message.md @@ -0,0 +1,10 @@ +{% block subject %}Test Email{% endblock %} + +# Hello {{ name }}! + +This is a **bold** test. + +1. Item one +2. Item two + +[A link](http://example.com) diff --git a/example_project/test_django_templated_email_md.py b/example_project/test_django_templated_email_md.py index e1f76a2..a5c1687 100644 --- a/example_project/test_django_templated_email_md.py +++ b/example_project/test_django_templated_email_md.py @@ -1,7 +1,13 @@ """Test cases for the django-templated-email-md package.""" -from django.apps import apps +import pytest from django.conf import settings +from django.core import mail +from django.template import TemplateDoesNotExist +from django.test import override_settings +from templated_email import send_templated_mail + +from templated_email_md.backend import MarkdownTemplateBackend def test_succeeds() -> None: @@ -14,6 +20,133 @@ def test_settings() -> None: assert settings.USE_TZ is True -def test_apps() -> None: - """Test that the app is configured in the Django project.""" - assert "templated_email_md" in apps.get_app_config("templated_email_md").name +@pytest.fixture +def backend(): + """Create a MarkdownTemplateBackend instance.""" + return MarkdownTemplateBackend() + + +def test_markdown_conversion(backend): + """Test conversion of Markdown to HTML.""" + response = backend._render_email("test_message", {"name": "Test User"}) + + assert "Hello Test User!" in response["html"] + assert "bold" in html_content + + +@override_settings(TEMPLATED_EMAIL_BACKEND='templated_email_md.backend.MarkdownTemplateBackend') +def test_fail_silently(): + """Test that fail_silently works as expected.""" + backend = MarkdownTemplateBackend(fail_silently=True) + + # Try to render a non-existent template + response = backend._render_email("non_existent_template", {}) + + # Should get a fallback response instead of an exception + assert "Email template rendering failed" in response["html"] + assert "Email template rendering failed" in response["plain"] + assert response["subject"] == "No Subject" + + +def test_subject_from_context(backend): + """Test that subject can be overridden from context.""" + response = backend._render_email( + "test_message", + {"name": "Test User", "subject": "Override Subject"} + ) + assert response["subject"] == "Override Subject"