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, mailurl 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.assertEqual(maillink('Hello', to='some@body.test'), r'Hello') self.assertEqual(maillink('Hello', to=['some@body.test']), r'Hello') self.assertEqual( maillink('Hello', to=['alice@test.test', 'bob@jinde.test']), r'Hello', ) self.assertEqual( 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.assertEqual( 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_mailurl(self): self.assertEqual(mailurl(to='some@body.test'), r'mailto:some@body.test') self.assertEqual(mailurl(to=['some@body.test']), r'mailto:some@body.test') self.assertEqual(mailurl(to=['alice@test.test', 'bob@jinde.test']), r'mailto:alice@test.test,bob@jinde.test') self.assertEqual( mailurl(to='some@body.test', body='Tělo', subject='Předmět'), r'mailto:some@body.test?subject=P%C5%99edm%C4%9Bt&body=T%C4%9Blo', ) self.assertRaises(ValueError, lambda: mailurl()) 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.assertEqual( render_template(template), r'Text', ) mailurltemplate = ( r'{% load mail %}' r'{% mailurl to="alice@test.test" subject="Čau Alice" %}' ) self.assertEqual(render_template(mailurltemplate), r'mailto:alice@test.test?subject=%C4%8Cau%20Alice')