from datetime import datetime, timedelta from django.test import TestCase from django.test.utils import override_settings from accounts.tests import AccountCreateTest from cases.tests import CaseCreation from common.models import Comment, User from common.tasks import ( resend_activation_link_to_user, send_email_to_new_user, send_email_user_delete, send_email_user_mentions, send_email_user_status, ) from common.tests import ObjectsCreation from contacts.tests import ContactObjectsCreation from invoices.tests import InvoiceCreateTest from leads.tests import TestLeadModel from opportunity.tests import OpportunityModel from tasks.tests import TaskCreateTest class TestCeleryTasks(ObjectsCreation, TestCase): @override_settings( CELERY_EAGER_PROPAGATES_EXCEPTIONS=True, CELERY_ALWAYS_EAGER=True, BROKER_BACKEND="memory", ) def test_celery_tasks(self): task = send_email_to_new_user.apply( ( self.user1.email, self.user.email, ), ) self.assertEqual("SUCCESS", task.state) task = send_email_user_status.apply( ( self.user1.id, self.user.id, ), ) self.assertEqual("SUCCESS", task.state) self.user1.is_active = False self.user1.has_sales_access = False self.user1.has_marketing_access = True self.user1.save() task = send_email_user_status.apply( (self.user1.id,), ) self.assertEqual("SUCCESS", task.state) self.user1.is_active = True self.user1.has_sales_access = False self.user1.has_marketing_access = False self.user1.save() task = send_email_user_status.apply( (self.user1.id,), ) self.assertEqual("SUCCESS", task.state) task = send_email_user_delete.apply( (self.user1.email,), ) self.assertEqual("SUCCESS", task.state) task = resend_activation_link_to_user.apply( (self.user1.email,), ) self.assertEqual("SUCCESS", task.state) task = resend_activation_link_to_user.apply( (self.user1.email,), ) self.assertEqual("SUCCESS", task.state) class TestUserMentionsForAccountComments(AccountCreateTest, TestCase): @override_settings( CELERY_EAGER_PROPAGATES_EXCEPTIONS=True, CELERY_ALWAYS_EAGER=True, BROKER_BACKEND="memory", ) def test_user_mentions_for_account_comment(self): self.user_comment = User.objects.create( first_name="johnComment", username="johnDoeComment", email="johnDoeComment@example.com", role="ADMIN", ) self.user_comment.set_password("password") self.user_comment.save() self.comment.comment = "content @{}".format(self.user_comment.username) self.comment.account = self.account self.comment.save() task = send_email_user_mentions.apply( ( self.comment.id, "accounts", str(self.comment.org.id), ), ) self.assertEqual("SUCCESS", task.state) class TestUserMentionsForContactsComments(ContactObjectsCreation, TestCase): @override_settings( CELERY_EAGER_PROPAGATES_EXCEPTIONS=True, CELERY_ALWAYS_EAGER=True, BROKER_BACKEND="memory", ) def test_user_mentions_for_contacts_comments(self): self.user_comment = User.objects.create( first_name="johnComment", username="johnDoeComment", email="johnDoeComment@example.com", role="ADMIN", ) self.user_comment.set_password("password") self.user_comment.save() self.comment.comment = "content @{}".format(self.user_comment.username) self.comment.contact = self.contact self.comment.save() task = send_email_user_mentions.apply( ( self.comment.id, "contacts", str(self.comment.org.id), ), ) self.assertEqual("SUCCESS", task.state) class TestUserMentionsForLeadsComments(TestLeadModel, TestCase): @override_settings( CELERY_EAGER_PROPAGATES_EXCEPTIONS=True, CELERY_ALWAYS_EAGER=True, BROKER_BACKEND="memory", ) def test_user_mentions_for_leads_comments(self): self.user_comment = User.objects.create( first_name="johnComment", username="johnDoeComment", email="johnDoeComment@example.com", role="ADMIN", ) self.user_comment.set_password("password") self.user_comment.save() self.comment.comment = "content @{}".format(self.user_comment.username) self.comment.lead = self.lead self.comment.save() task = send_email_user_mentions.apply( ( self.comment.id, "leads", str(self.comment.org.id), ), ) self.assertEqual("SUCCESS", task.state) class TestUserMentionsForOpportunityComments(OpportunityModel, TestCase): @override_settings( CELERY_EAGER_PROPAGATES_EXCEPTIONS=True, CELERY_ALWAYS_EAGER=True, BROKER_BACKEND="memory", ) def test_user_mentions_for_opportunity_comments(self): self.user_comment = User.objects.create( first_name="johnComment", username="johnDoeComment", email="johnDoeComment@example.com", role="ADMIN", ) self.user_comment.set_password("password") self.user_comment.save() self.comment.comment = "content @{}".format(self.user_comment.username) self.comment.opportunity = self.opportunity self.comment.save() task = send_email_user_mentions.apply( ( self.comment.id, "opportunity", str(self.comment.org.id), ), ) self.assertEqual("SUCCESS", task.state) class TestUserMentionsForCasesComments(CaseCreation, TestCase): @override_settings( CELERY_EAGER_PROPAGATES_EXCEPTIONS=True, CELERY_ALWAYS_EAGER=True, BROKER_BACKEND="memory", ) def test_user_mentions_for_cases_comments(self): self.user_comment = User.objects.create( first_name="johnComment", username="johnDoeComment", email="johnDoeComment@example.com", role="ADMIN", ) self.user_comment.set_password("password") self.user_comment.save() self.comment.comment = "content @{}".format(self.user_comment.username) self.comment.case = self.case self.comment.save() task = send_email_user_mentions.apply( ( self.comment.id, "cases", str(self.comment.org.id), ), ) self.assertEqual("SUCCESS", task.state) class TestUserMentionsForTasksComments(TaskCreateTest, TestCase): @override_settings( CELERY_EAGER_PROPAGATES_EXCEPTIONS=True, CELERY_ALWAYS_EAGER=True, BROKER_BACKEND="memory", ) def test_user_mentions_for_tasks_comments(self): self.user_comment = User.objects.create( first_name="johnComment", username="johnDoeComment", email="johnDoeComment@example.com", role="ADMIN", ) self.user_comment.set_password("password") self.user_comment.save() self.comment.comment = "content @{}".format(self.user_comment.username) self.comment.task = self.task self.comment.save() task = send_email_user_mentions.apply( ( self.comment.id, "tasks", str(self.comment.org.id), ), ) self.assertEqual("SUCCESS", task.state) class TestUserMentionsForInvoiceComments(InvoiceCreateTest, TestCase): @override_settings( CELERY_EAGER_PROPAGATES_EXCEPTIONS=True, CELERY_ALWAYS_EAGER=True, BROKER_BACKEND="memory", ) def test_user_mentions_for_invoice_comments(self): self.user_comment = User.objects.create( first_name="johnComment", username="johnDoeComment", email="johnDoeComment@example.com", role="ADMIN", ) self.user_comment.set_password("password") self.user_comment.save() self.comment.comment = "content @{}".format(self.user_comment.username) self.comment.invoice = self.invoice self.comment.save() task = send_email_user_mentions.apply( ( self.comment.id, "invoices", str(self.comment.org.id), ), ) self.assertEqual("SUCCESS", task.state)