You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_email.py 2.7 KiB

12 jaren geleden
12 jaren geleden
12 jaren geleden
12 jaren geleden
12 jaren geleden
12 jaren geleden
12 jaren geleden
12 jaren geleden
12 jaren geleden
12 jaren geleden
12 jaren geleden
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()