diff --git a/addons/mass_mailing/models/mailing_contact.py b/addons/mass_mailing/models/mailing_contact.py index bde7c2c057c..404fa4de43d 100644 --- a/addons/mass_mailing/models/mailing_contact.py +++ b/addons/mass_mailing/models/mailing_contact.py @@ -14,7 +14,7 @@ class MassMailingContact(models.Model): _name = 'mailing.contact' _inherit = ['mail.thread.blacklist'] _description = 'Mailing Contact' - _order = 'email' + _order = 'name ASC, id DESC' _mailing_enabled = True def default_get(self, fields_list): diff --git a/addons/test_mass_mailing/models/mailing_models.py b/addons/test_mass_mailing/models/mailing_models.py index e6ed803c4ba..eca2ecb18f5 100644 --- a/addons/test_mass_mailing/models/mailing_models.py +++ b/addons/test_mass_mailing/models/mailing_models.py @@ -61,6 +61,7 @@ class MailingBLacklist(models.Model): _description = 'Mailing Blacklist Enabled' _name = 'mailing.test.blacklist' _inherit = ['mail.thread.blacklist'] + _order = 'name ASC, id DESC' _primary_email = 'email_from' name = fields.Char() diff --git a/addons/test_mass_mailing/tests/test_mailing_test.py b/addons/test_mass_mailing/tests/test_mailing_test.py index 5e0d8ac149a..7aa6e6ed7d4 100644 --- a/addons/test_mass_mailing/tests/test_mailing_test.py +++ b/addons/test_mass_mailing/tests/test_mailing_test.py @@ -11,18 +11,31 @@ from odoo.tools import mute_logger @tagged('mailing_manage') class TestMailingTest(TestMassMailCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.test_records = cls.env['mailing.test.blacklist'].create([ + { + 'email_from': f'test.mailing.{idx}@test.example.com', + 'name': f'Test Mailing {idx}', + 'user_id': cls.user_marketing.id, + } + for idx in range(5) + ]) + cls.test_mailing_bl = cls.env['mailing.mailing'].create({ + 'body_html': '

Hello

', + 'mailing_domain': [('id', 'in', cls.test_records.ids)], + 'mailing_model_id': cls.env['ir.model']._get_id('mailing.test.blacklist'), + 'mailing_type': 'mail', + 'name': 'TestButton', + 'preview': 'Preview {{ object.name }}', + 'subject': 'Subject {{ object.name }}', + }) + @users('user_marketing') @mute_logger('odoo.addons.mail.models.mail_render_mixin') def test_mailing_test_button(self): - mailing = self.env['mailing.mailing'].create({ - 'name': 'TestButton', - 'subject': 'Subject {{ object.name }}', - 'preview': 'Preview {{ object.name }}', - 'state': 'draft', - 'mailing_type': 'mail', - 'body_html': '

Hello

', - 'mailing_model_id': self.env['ir.model']._get('res.partner').id, - }) + mailing = self.test_mailing_bl.with_env(self.env) mailing_test = self.env['mailing.mailing.test'].create({ 'email_to': 'test@test.com', 'mass_mailing_id': mailing.id, @@ -63,25 +76,12 @@ class TestMailingTest(TestMassMailCommon): mailing_test.send_mail_test() def test_mailing_test_equals_reality(self): - """ - Check that both test and real emails will format the qweb and inline placeholders correctly in body and subject. - """ - contact_list = self.env['mailing.list'].create({ - 'name': 'Testers', - 'contact_ids': [Command.create({ - 'name': 'Mitchell Admin', - 'email': 'real@real.com', - })], - }) - - mailing = self.env['mailing.mailing'].create({ - 'name': 'TestButton', - 'subject': 'Subject {{ object.name }} ', - 'state': 'draft', - 'mailing_type': 'mail', + """ Check that both test and real emails will format the qweb and inline + placeholders correctly in body and subject. """ + mailing = self.test_mailing_bl.with_env(self.env) + mailing.write({ 'body_html': '

Hello {{ object.name }}

', - 'mailing_model_id': self.env['ir.model']._get('mailing.list').id, - 'contact_list_ids': [contact_list.id], + 'subject': 'Subject {{ object.name }} ', }) mailing_test = self.env['mailing.mailing.test'].create({ 'email_to': 'test@test.com', @@ -91,8 +91,10 @@ class TestMailingTest(TestMassMailCommon): with self.mock_mail_gateway(): mailing_test.send_mail_test() - expected_subject = 'Subject Mitchell Admin ' - expected_body = 'Hello {{ object.name }} Mitchell Admin' + expected_test_record = self.env[mailing.mailing_model_real].search([], limit=1) + self.assertEqual(expected_test_record, self.test_records[0], 'Should take first found one') + expected_subject = f'Subject {expected_test_record.name} ' + expected_body = 'Hello {{ object.name }}' + f' {expected_test_record.name}' self.assertSentEmail(self.env.user.partner_id, ['test@test.com'], subject=expected_subject, @@ -103,6 +105,9 @@ class TestMailingTest(TestMassMailCommon): mailing.action_launch() self.env.ref('mass_mailing.ir_cron_mass_mailing_queue').method_direct_trigger() - self.assertSentEmail(self.env.user.partner_id, ['real@real.com'], + self.assertSentEmail( + self.env.user.partner_id, + [expected_test_record.email_from], subject=expected_subject, - body_content=expected_body) + body_content=expected_body, + )