fix: add auto-prefix for message subject when sending email
This commit is contained in:
parent
5de9c15bbd
commit
8a0830b35d
2 changed files with 203 additions and 26 deletions
|
|
@ -31,6 +31,17 @@ class TestEmailSetting(ConfigTestCase):
|
|||
setting = MockSetting(self.config)
|
||||
self.assertEqual(setting.get_description(), "this should be a good test")
|
||||
|
||||
def test_get_default_prefix(self):
|
||||
|
||||
# empty by default
|
||||
setting = mod.EmailSetting(self.config)
|
||||
self.assertIsNone(setting.default_prefix)
|
||||
self.assertIsNone(setting.get_default_prefix())
|
||||
|
||||
# but can override
|
||||
setting.default_prefix = "[foo]"
|
||||
self.assertEqual(setting.get_default_prefix(), "[foo]")
|
||||
|
||||
def test_sample_data(self):
|
||||
setting = mod.EmailSetting(self.config)
|
||||
self.assertEqual(setting.sample_data(), {})
|
||||
|
|
@ -136,6 +147,7 @@ class TestMessage(FileTestCase):
|
|||
|
||||
class mock_foo(mod.EmailSetting):
|
||||
default_subject = "MOCK FOO!"
|
||||
default_prefix = "[mock_foo]"
|
||||
|
||||
def sample_data(self):
|
||||
return {"foo": "mock"}
|
||||
|
|
@ -253,7 +265,7 @@ class TestEmailHandler(ConfigTestCase):
|
|||
self.assertIsInstance(msg, mod.Message)
|
||||
self.assertEqual(msg.key, "foo")
|
||||
self.assertEqual(msg.sender, "root@localhost")
|
||||
self.assertEqual(msg.subject, "Automated message")
|
||||
self.assertEqual(msg.subject, "[WuttJamaican] Automated message")
|
||||
self.assertEqual(msg.to, [])
|
||||
self.assertEqual(msg.cc, [])
|
||||
self.assertEqual(msg.bcc, [])
|
||||
|
|
@ -270,7 +282,7 @@ class TestEmailHandler(ConfigTestCase):
|
|||
self.assertIsInstance(msg, mod.Message)
|
||||
self.assertEqual(msg.key, "foo")
|
||||
self.assertEqual(msg.sender, "bob@example.com")
|
||||
self.assertEqual(msg.subject, "Attention required")
|
||||
self.assertEqual(msg.subject, "[WuttJamaican] Attention required")
|
||||
self.assertEqual(msg.to, [])
|
||||
self.assertEqual(msg.cc, [])
|
||||
self.assertEqual(msg.bcc, [])
|
||||
|
|
@ -287,7 +299,7 @@ class TestEmailHandler(ConfigTestCase):
|
|||
msg = handler.make_auto_message("test_foo")
|
||||
self.assertEqual(msg.key, "test_foo")
|
||||
self.assertEqual(msg.sender, "bob@example.com")
|
||||
self.assertEqual(msg.subject, "hello foo")
|
||||
self.assertEqual(msg.subject, "[WuttJamaican] hello foo")
|
||||
self.assertEqual(msg.to, ["sally@example.com"])
|
||||
self.assertEqual(msg.cc, [])
|
||||
self.assertEqual(msg.bcc, [])
|
||||
|
|
@ -311,7 +323,12 @@ class TestEmailHandler(ConfigTestCase):
|
|||
get_auto_subject.assert_not_called()
|
||||
msg = handler.make_auto_message("foo")
|
||||
get_auto_subject.assert_called_once_with(
|
||||
"foo", {}, default=None, fallback_key=None
|
||||
"foo",
|
||||
{},
|
||||
default=None,
|
||||
prefix=True,
|
||||
default_prefix=None,
|
||||
fallback_key=None,
|
||||
)
|
||||
|
||||
# to
|
||||
|
|
@ -421,36 +438,80 @@ class TestEmailHandler(ConfigTestCase):
|
|||
)
|
||||
self.assertEqual(template, "whatever is clever")
|
||||
|
||||
def test_get_auto_subject_prefix(self):
|
||||
handler = self.make_handler()
|
||||
|
||||
# global default
|
||||
prefix = handler.get_auto_subject_prefix("foo")
|
||||
self.assertEqual(prefix, "[WuttJamaican]")
|
||||
|
||||
# can configure alternate global default
|
||||
self.config.setdefault("wutta.email.default.prefix", "[bar]")
|
||||
prefix = handler.get_auto_subject_prefix("foo")
|
||||
self.assertEqual(prefix, "[bar]")
|
||||
|
||||
# can configure just for key
|
||||
self.config.setdefault("wutta.email.foo.prefix", "[foo]")
|
||||
prefix = handler.get_auto_subject_prefix("foo")
|
||||
self.assertEqual(prefix, "[foo]")
|
||||
|
||||
# can configure via fallback_key
|
||||
self.config.setdefault("wutta.email.bar.prefix", "[baz]")
|
||||
prefix = handler.get_auto_subject_prefix("foofoo", fallback_key="bar")
|
||||
self.assertEqual(prefix, "[baz]")
|
||||
|
||||
# EmailSetting can provide default prefix
|
||||
providers = {
|
||||
"wuttatest": MagicMock(email_modules=["tests.test_email"]),
|
||||
}
|
||||
with patch.object(self.app, "providers", new=providers):
|
||||
handler = self.make_handler()
|
||||
prefix = handler.get_auto_subject_prefix("mock_foo")
|
||||
self.assertEqual(prefix, "[mock_foo]")
|
||||
|
||||
# or caller can provide default
|
||||
prefix = handler.get_auto_subject_prefix("mock_foo", default="[zzz]")
|
||||
self.assertEqual(prefix, "[zzz]")
|
||||
|
||||
def test_get_auto_subject(self):
|
||||
handler = self.make_handler()
|
||||
|
||||
# global default
|
||||
subject = handler.get_auto_subject("foo")
|
||||
self.assertEqual(subject, "Automated message")
|
||||
self.assertEqual(subject, "[WuttJamaican] Automated message")
|
||||
|
||||
# can configure alternate global default
|
||||
self.config.setdefault("wutta.email.default.subject", "Wutta Message")
|
||||
subject = handler.get_auto_subject("foo")
|
||||
self.assertEqual(subject, "Wutta Message")
|
||||
self.assertEqual(subject, "[WuttJamaican] Wutta Message")
|
||||
|
||||
# caller can provide default subject
|
||||
subject = handler.get_auto_subject("foo", default="whatever is clever")
|
||||
self.assertEqual(subject, "whatever is clever")
|
||||
self.assertEqual(subject, "[WuttJamaican] whatever is clever")
|
||||
|
||||
# can configure just for key
|
||||
self.config.setdefault("wutta.email.foo.subject", "Foo Message")
|
||||
subject = handler.get_auto_subject("foo")
|
||||
self.assertEqual(subject, "Foo Message")
|
||||
self.assertEqual(subject, "[WuttJamaican] Foo Message")
|
||||
|
||||
# proper template is rendered
|
||||
# proper template is rendered..
|
||||
self.config.setdefault("wutta.email.bar.subject", "${foo} Message")
|
||||
subject = handler.get_auto_subject("bar", {"foo": "FOO"})
|
||||
self.assertEqual(subject, "FOO Message")
|
||||
self.assertEqual(subject, "[WuttJamaican] FOO Message")
|
||||
|
||||
# unless we ask it not to
|
||||
# ..unless we ask it not to
|
||||
subject = handler.get_auto_subject("bar", {"foo": "FOO"}, rendered=False)
|
||||
# nb. no prefix for unrendered template
|
||||
self.assertEqual(subject, "${foo} Message")
|
||||
|
||||
# now suppress/override the prefix
|
||||
subject = handler.get_auto_subject("foo")
|
||||
self.assertEqual(subject, "[WuttJamaican] Foo Message")
|
||||
subject = handler.get_auto_subject("foo", prefix=False)
|
||||
self.assertEqual(subject, "Foo Message")
|
||||
subject = handler.get_auto_subject("foo", default_prefix="[foo]")
|
||||
self.assertEqual(subject, "[foo] Foo Message")
|
||||
|
||||
def test_get_auto_recips(self):
|
||||
handler = self.make_handler()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue