def test_send_to(self): Mock = mock.Mock with mock.patch('sentry.models.ProjectOption.objects.get_value') as get_value: opts = {} get_value.side_effect = lambda p, k, d: opts.get(k, d) admins = ['*****@*****.**'] member_emails = ['*****@*****.**', '*****@*****.**'] project_emails = ['*****@*****.**', '*****@*****.**'] project = Mock() project.member_set = Mock() project.member_set.values_list.return_value = member_emails with mock.patch('sentry.plugins.sentry_mail.settings') as settings: settings.ADMINS = admins # member emails without admins p = MailProcessor() self.assertEqual(sorted(set(member_emails)), sorted(p.get_send_to(project))) # member emails with members p = MailProcessor() opts = {'mail:send_to_admins': True} p._send_mail('', '', project=project) self.assertEqual(sorted(set(member_emails + admins)), sorted(p.get_send_to(project))) # project emails without members p = MailProcessor() opts = {'mail:send_to': ','.join(project_emails), 'mail:send_to_members': False} p._send_mail('', '', project=project) self.assertEqual(sorted(set(project_emails)), sorted(p.get_send_to(project))) # project emails with members p = MailProcessor() opts = {'mail:send_to': ','.join(project_emails), 'mail:send_to_members': False, 'mail:send_to_admins': True} p._send_mail('', '', project=project) self.assertEqual(sorted(set(project_emails + admins)), sorted(p.get_send_to(project))) # project emails with members and admins p = MailProcessor() opts = {'mail:send_to': ','.join(project_emails), 'mail:send_to_members': True, 'mail:send_to_admins': True} p._send_mail('', '', project=project) self.assertEqual(sorted(set(project_emails + admins + member_emails)), sorted(p.get_send_to(project)))