mirror of
https://github.com/GSA/notifications-api.git
synced 2026-01-30 14:31:57 -05:00
Updated based on PR comments
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user