No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

test_email.py 2.7 KiB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
  2. # MIT License. See license.txt
  3. from __future__ import unicode_literals
  4. import os, sys
  5. sys.path.append('.')
  6. sys.path.append('lib/py')
  7. sys.path.append('erpnext')
  8. import unittest, webnotes
  9. from webnotes.test_runner import make_test_records
  10. make_test_records("Profile")
  11. class TestEmail(unittest.TestCase):
  12. def setUp(self):
  13. webnotes.conn.sql("""update tabProfile set unsubscribed=0""")
  14. webnotes.conn.sql("""delete from `tabBulk Email`""")
  15. def test_send(self):
  16. from webnotes.utils.email_lib import sendmail
  17. #sendmail('test@example.com', subject='Test Mail', msg="Test Content")
  18. def test_bulk(self):
  19. from webnotes.utils.email_lib.bulk import send
  20. send(recipients = ['test@example.com', 'test1@example.com'],
  21. doctype='Profile', email_field='email',
  22. subject='Testing Bulk', message='This is a bulk mail!')
  23. bulk = webnotes.conn.sql("""select * from `tabBulk Email` where status='Not Sent'""", as_dict=1)
  24. self.assertEquals(len(bulk), 2)
  25. self.assertTrue('test@example.com' in [d['recipient'] for d in bulk])
  26. self.assertTrue('test1@example.com' in [d['recipient'] for d in bulk])
  27. self.assertTrue('Unsubscribe' in bulk[0]['message'])
  28. def test_flush(self):
  29. self.test_bulk()
  30. from webnotes.utils.email_lib.bulk import flush
  31. flush(from_test=True)
  32. bulk = webnotes.conn.sql("""select * from `tabBulk Email` where status='Sent'""", as_dict=1)
  33. self.assertEquals(len(bulk), 2)
  34. self.assertTrue('test@example.com' in [d['recipient'] for d in bulk])
  35. self.assertTrue('test1@example.com' in [d['recipient'] for d in bulk])
  36. def test_unsubscribe(self):
  37. from webnotes.utils.email_lib.bulk import unsubscribe, send
  38. webnotes.form_dict = {
  39. 'email':'test@example.com',
  40. 'type':'Profile',
  41. 'email_field':'email',
  42. "from_test": True
  43. }
  44. unsubscribe()
  45. send(recipients = ['test@example.com', 'test1@example.com'],
  46. doctype='Profile', email_field='email',
  47. subject='Testing Bulk', message='This is a bulk mail!')
  48. bulk = webnotes.conn.sql("""select * from `tabBulk Email` where status='Not Sent'""",
  49. as_dict=1)
  50. self.assertEquals(len(bulk), 1)
  51. self.assertFalse('test@example.com' in [d['recipient'] for d in bulk])
  52. self.assertTrue('test1@example.com' in [d['recipient'] for d in bulk])
  53. self.assertTrue('Unsubscribe' in bulk[0]['message'])
  54. def test_bulk_limit(self):
  55. from webnotes.utils.email_lib.bulk import unsubscribe, send, BulkLimitCrossedError
  56. self.assertRaises(BulkLimitCrossedError, send,
  57. recipients=['test@example.com']*1000,
  58. doctype='Profile', email_field='email',
  59. subject='Testing Bulk', message='This is a bulk mail!')
  60. if __name__=='__main__':
  61. webnotes.connect()
  62. unittest.main()