def _send_staffing_request_by_mail(self, email, message): html_message = html_from_plaintext(message) # Slack does not accept html tags, so we want to let markdown add some # simple things like <p> send_mail('A new task is available for you', message, settings.ORCHESTRA_NOTIFICATIONS_FROM_EMAIL, [email], html_message=html_message)
def test_get_staffing_request_messsage(self, mock_mail): def _task_factory(status, path): description_no_kwargs = {'path': path} return TaskFactory( status=status, step=StepFactory( slug='stepslug', description='the step', detailed_description_function=description_no_kwargs), project__workflow_version__workflow__description=( 'the workflow'), project__short_description='the coolest project' ) # Test slack without review and with a detailed_description_function task = _task_factory( Task.Status.AWAITING_PROCESSING, 'orchestra.tests.helpers.fixtures.get_detailed_description') staffing_request_inquiry = StaffingRequestInquiryFactory( communication_preference__worker__user__first_name='test-name', request__task=task) message = StaffBot()._get_staffing_request_message( staffing_request_inquiry, 'communication/new_task_available_slack.txt') self.assertEqual(message, '''Hello test-name! A new task is available for you to work on, if you'd like! Here are the details: Project type: the workflow Project description: the coolest project Task type: the step More details: No text given stepslug <http://127.0.0.1:8000/orchestra/communication/accept_staffing_request_inquiry/{}/|Accept the Task> <http://127.0.0.1:8000/orchestra/communication/reject_staffing_request_inquiry/{}/|Reject the Task> '''.format(staffing_request_inquiry.id, staffing_request_inquiry.id)) # noqa # Test email with review and no detailed_description_function task = _task_factory( Task.Status.PENDING_REVIEW, 'orchestra.bots.tests.test_staffbot._noop_details') staffing_request_inquiry = StaffingRequestInquiryFactory( communication_preference__worker__user__first_name='test-name2', request=StaffBotRequestFactory( task=task, required_role_counter=1)) message = StaffBot()._get_staffing_request_message( staffing_request_inquiry, 'communication/new_task_available_email.txt') self.assertEqual(message, '''Hello test-name2! A new task is available for you to work on, if you'd like! Here are the details: Project type: the workflow Project description: the coolest project Task type: the step [Review] <a href="http://127.0.0.1:8000/orchestra/communication/accept_staffing_request_inquiry/{}/">Accept the Task</a> <a href="http://127.0.0.1:8000/orchestra/communication/reject_staffing_request_inquiry/{}/">Reject the Task</a> '''.format(staffing_request_inquiry.id, staffing_request_inquiry.id)) # noqa # Test that we markdown things StaffBot()._send_staffing_request_by_mail('*****@*****.**', message) mock_mail.assert_called_once_with( 'A new task is available for you', message, settings.ORCHESTRA_NOTIFICATIONS_FROM_EMAIL, ['*****@*****.**'], html_message=html_from_plaintext(message) )
def test_get_staffing_request_messsage(self, mock_mail): def _task_factory(status, path): description_no_kwargs = {'path': path} return TaskFactory( status=status, step=StepFactory( slug='stepslug', description='the step', detailed_description_function=description_no_kwargs), project__workflow_version__workflow__description=( 'the workflow'), project__short_description='the coolest project') # Test slack without review and with a detailed_description_function task = _task_factory( Task.Status.AWAITING_PROCESSING, 'orchestra.tests.helpers.fixtures.get_detailed_description') staffing_request_inquiry = StaffingRequestInquiryFactory( communication_preference__worker__user__first_name='test-name', request__task=task) message = StaffBot()._get_staffing_request_message( staffing_request_inquiry, 'communication/new_task_available_slack.txt') self.assertEqual(message, '''Hello test-name! A new task is available for you to work on, if you'd like! Here are the details: Project: the workflow Project description: the coolest project Task: the step Details: No text given stepslug <http://127.0.0.1:8000/orchestra/communication/accept_staffing_request_inquiry/{}/|Accept the Task> <http://127.0.0.1:8000/orchestra/communication/reject_staffing_request_inquiry/{}/|Ignore the Task> <http://127.0.0.1:8000/orchestra/communication/available_staffing_requests/|View All Available Tasks> '''.format(staffing_request_inquiry.id, staffing_request_inquiry.id)) # noqa # Test email with review and no detailed_description_function task = _task_factory( Task.Status.PENDING_REVIEW, 'orchestra.bots.tests.test_staffbot._noop_details') staffing_request_inquiry = StaffingRequestInquiryFactory( communication_preference__worker__user__first_name='test-name2', request=StaffBotRequestFactory(task=task, required_role_counter=1)) message = StaffBot()._get_staffing_request_message( staffing_request_inquiry, 'communication/new_task_available_email.txt') self.assertEqual(message, '''Hello test-name2! A new task is available for you to work on, if you'd like! Here are the details: Project: the workflow Project description: the coolest project Task: the step [Review] <a href="http://127.0.0.1:8000/orchestra/communication/accept_staffing_request_inquiry/{}/">Accept the Task</a> <a href="http://127.0.0.1:8000/orchestra/communication/reject_staffing_request_inquiry/{}/">Ignore the Task</a> <a href="http://127.0.0.1:8000/orchestra/communication/available_staffing_requests/">View All Available Tasks</a> '''.format(staffing_request_inquiry.id, staffing_request_inquiry.id)) # noqa # Test that we markdown things StaffBot()._send_staffing_request_by_mail('*****@*****.**', message) mock_mail.assert_called_once_with( 'A new task is available for you', message, settings.ORCHESTRA_NOTIFICATIONS_FROM_EMAIL, ['*****@*****.**'], html_message=html_from_plaintext(message))