60 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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'<a href="mailto:some@body.test">Hello</a>')
 | |
| 		self.assertEqual(maillink('Hello', to=['some@body.test']), r'<a href="mailto:some@body.test">Hello</a>')
 | |
| 		self.assertEqual(
 | |
| 			maillink('Hello', to=['alice@test.test', 'bob@jinde.test']),
 | |
| 			r'<a href="mailto:alice@test.test,bob@jinde.test">Hello</a>',
 | |
| 			)
 | |
| 		self.assertEqual(
 | |
| 			maillink('Hello', to='some@body.test', attrs='class="trida" id="id"'),
 | |
| 			r'<a href="mailto:some@body.test" class="trida" id="id">Hello</a>',
 | |
| 			)
 | |
| 		# 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'<a href="mailto:prijemce@wtf.test?subject=P%C5%99edm%C4%9Bt&body=%C4%8Cau">Text odkazu</a>',
 | |
| 			)
 | |
| 		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'<a href="mailto:alice@test.test?subject=Oprava%20%C5%99e%C5%A1en%C3%AD">Text</a>',
 | |
| 			)
 | |
| 		
 | |
| 		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')
 | 
