from django.test import TestCase # TODO: Možná vyrobit separátní soubory v tests/… než mít všechny testy v jednom souboru? from various.templatetags.mail import maillink class MailTagsTest(TestCase): """Testuje template tagy ohledně mailů.""" def test_maillink(self): # Tohle nedává smysl dělit do víc funkcí, bylo by v nich víc boilerplatu než užitečného kódu. self.assertEquals(maillink('Hello', to='some@body.test'), r'Hello') self.assertEquals(maillink('Hello', to=['some@body.test']), r'Hello') self.assertEquals( maillink('Hello', to=['alice@test.test', 'bob@jinde.test']), r'Hello', ) self.assertEquals( maillink('Hello', to='some@body.test', attrs='class="trida" id="id"'), r'Hello', ) # Následující test toho testuje moc zároveň, měly by předcházet dedikované testy… (kašlu na ně :-P) self.assertEquals( maillink('Text odkazu', to='prijemce@wtf.test', subject="Předmět", body="Čau"), r'Text odkazu', ) self.assertRaises(ValueError, lambda: maillink('Nemám příjemce')) self.assertRaises(TypeError, lambda: maillink()) # Nemá text, takže to shodí python def test_render_in_template(self): # Pomocná funkce: vykreslí template do stringu # Ref: https://stackoverflow.com/a/1690879 def render_template(template, context=None): from django.template import Template, Context context = context or {} context = Context(context) return Template(template).render(context) template=( r'{% load mail %}' # TODO: Vyzkoušet i víc adresátů. (Nepamatuji si z hlavy syntaxi…) r'{% maillink "Text" to="alice@test.test" subject="Oprava řešení" %}' ) self.assertEquals( render_template(template), r'Text', )