Updated based on PR comments

This commit is contained in:
alexjanousekGSA
2025-06-09 12:09:22 -04:00
parent 8c70b2b7bd
commit bc68f80958
4 changed files with 98 additions and 20 deletions

View File

@@ -3,12 +3,14 @@ from datetime import date, datetime
import pytest
from freezegun import freeze_time
from app.enums import ServicePermissionType
from app.enums import ServicePermissionType, TemplateType
from app.utils import (
get_midnight_in_utc,
get_public_notify_type_text,
get_template_instance,
midnight_n_days_ago,
)
from notifications_utils.template import HTMLEmailTemplate, SMSMessageTemplate
@pytest.mark.parametrize(
@@ -52,3 +54,87 @@ def test_get_public_notify_type_text():
assert (
get_public_notify_type_text(ServicePermissionType.UPLOAD_DOCUMENT) == "document"
)
@pytest.mark.parametrize(
"template_type, expected_class",
[
(TemplateType.SMS, SMSMessageTemplate),
(TemplateType.EMAIL, HTMLEmailTemplate),
],
)
def test_get_template_instance_with_none_values(template_type, expected_class):
"""Test that get_template_instance handles None values safely for both template types"""
template = {
"template_type": template_type,
"id": "test-id",
"content": "Test content",
"subject": "Test subject" if template_type == TemplateType.EMAIL else None,
}
result = get_template_instance(template, values=None)
assert isinstance(result, expected_class)
result_default = get_template_instance(template)
assert isinstance(result_default, expected_class)
@pytest.mark.parametrize(
"template_type, expected_class",
[
(TemplateType.SMS, SMSMessageTemplate),
(TemplateType.EMAIL, HTMLEmailTemplate),
],
)
def test_get_template_instance_with_actual_values(template_type, expected_class):
"""Test that get_template_instance works normally with actual values"""
template = {
"template_type": template_type,
"id": "test-id",
"content": "Hello ((name))",
"subject": "Test subject" if template_type == TemplateType.EMAIL else None,
}
values = {"name": "World"}
result = get_template_instance(template, values=values)
assert isinstance(result, expected_class)
def test_get_template_instance_invalid_template_type():
"""Test that get_template_instance raises KeyError for invalid template types"""
template = {
"template_type": "INVALID_TYPE",
"id": "test-id",
"content": "Test content",
}
with pytest.raises(KeyError):
get_template_instance(template, values=None)
@pytest.mark.parametrize(
"template_type, values",
[
(TemplateType.SMS, None),
(TemplateType.SMS, {}),
(TemplateType.SMS, {"name": "test"}),
(TemplateType.EMAIL, None),
(TemplateType.EMAIL, {}),
(TemplateType.EMAIL, {"name": "test"}),
],
)
def test_get_template_instance_comprehensive(template_type, values):
"""Comprehensive test covering all combinations of template types and value scenarios"""
template = {
"template_type": template_type,
"id": "test-id",
"content": "Test content ((name))" if values and "name" in values else "Test content",
"subject": "Test subject" if template_type == TemplateType.EMAIL else None,
}
result = get_template_instance(template, values=values)
if template_type == TemplateType.SMS:
assert isinstance(result, SMSMessageTemplate)
else:
assert isinstance(result, HTMLEmailTemplate)