Hello! This is an example of incoming email.
Hello! This is an example of user comment.
Hello! This is an example of SMS.
Hello! This is an example of another SMS with notifications.
Test Post Performances with an email ping
', partner_ids=self.customer.ids, @@ -265,7 +265,7 @@ class TestAdvMailPerformance(BaseMailPerformance): def test_message_post_one_inbox_notification(self): record = self.env['mail.test.simple'].create({'name': 'Test'}) - with self.assertQueryCount(__system__=30, emp=36): # com runbot 30 - 36 // test_mail only: 30 - 36 + with self.assertQueryCount(__system__=29, emp=34): # com runbot 29 - 34 // test_mail only: 29 - 34 record.message_post( body='Test Post Performances with an inbox ping
', partner_ids=self.user_test.partner_id.ids, @@ -373,7 +373,7 @@ class TestHeavyMailPerformance(BaseMailPerformance): self.umbrella.message_subscribe(self.user_portal.partner_id.ids) record = self.umbrella.with_user(self.env.user) - with self.assertQueryCount(__system__=78, emp=82): # com runbot: 78 - 82 // test_mail only: 78 - 82 + with self.assertQueryCount(__system__=82, emp=85): # com runbot: 82 - 85 // test_mail only: 82 - 85 record.message_post( body='Test Post Performances
', message_type='comment', @@ -390,7 +390,7 @@ class TestHeavyMailPerformance(BaseMailPerformance): record = self.umbrella.with_user(self.env.user) template_id = self.env.ref('test_mail.mail_test_tpl').id - with self.assertQueryCount(__system__=93, emp=99): # com runbot: 93 - 99 // test_mail only: 93 - 99 + with self.assertQueryCount(__system__=98, emp=103): # com runbot: 98 - 103 // test_mail only: 98 - 103 record.message_post_with_template(template_id, message_type='comment', composition_mode='comment') self.assertEqual(record.message_ids[0].body, 'Adding stuff on %s
' % record.name) @@ -459,7 +459,7 @@ class TestHeavyMailPerformance(BaseMailPerformance): 'user_id': self.env.uid, }) self.assertEqual(rec.message_partner_ids, self.partners | self.env.user.partner_id) - with self.assertQueryCount(__system__=54, emp=57): # com runbot: 54 - 57 // test_mail only: 54 - 57 + with self.assertQueryCount(__system__=51, emp=53): # com runbot: 51 - 53 // test_mail only: 51 - 53 rec.write({'user_id': self.user_portal.id}) self.assertEqual(rec.message_partner_ids, self.partners | self.env.user.partner_id | self.user_portal.partner_id) # write tracking message @@ -479,7 +479,7 @@ class TestHeavyMailPerformance(BaseMailPerformance): customer_id = self.customer.id user_id = self.user_portal.id - with self.assertQueryCount(__system__=145, emp=149): # com runbot: 145 - 149 // test_mail only: 145 - 149 + with self.assertQueryCount(__system__=146, emp=149): # com runbot: 146 - 149 // test_mail only: 146 - 149 rec = self.env['mail.test.full'].create({ 'name': 'Test', 'umbrella_id': umbrella_id, @@ -506,7 +506,7 @@ class TestHeavyMailPerformance(BaseMailPerformance): }) self.assertEqual(rec.message_partner_ids, self.user_portal.partner_id | self.env.user.partner_id) self.assertEqual(len(rec.message_ids), 1) - with self.assertQueryCount(__system__=95, emp=100): # com runbot: 95 - 100 // test_mail only: 95 - 100 + with self.assertQueryCount(__system__=100, emp=106): # com runbot: 100 -106 // test_mail only: 100 - 106 rec.write({ 'name': 'Test2', 'umbrella_id': self.umbrella.id, @@ -542,7 +542,7 @@ class TestHeavyMailPerformance(BaseMailPerformance): }) self.assertEqual(rec.message_partner_ids, self.user_portal.partner_id | self.env.user.partner_id) - with self.assertQueryCount(__system__=100, emp=105): # test_mail only: 100 - 105 + with self.assertQueryCount(__system__=105, emp=111): # test_mail only: 105 - 111 rec.write({ 'name': 'Test2', 'umbrella_id': umbrella_id, @@ -704,14 +704,14 @@ class TestMailPerformancePost(BaseMailPerformance): partner_ids = [self.user_inbox.partner_id.id, self.user_email.partner_id.id, self.partner.id] channel_ids = [self.channel_inbox.id, self.channel_email.id] record = self.record.with_user(self.env.user) - attachements = [ # not linear on number of attachements + attachements = [ # not linear on number of attachements ('attach tuple 1', "attachement tupple content 1"), ('attach tuple 2', "attachement tupple content 2", {'cid': 'cid1'}), ('attach tuple 3', "attachement tupple content 3", {'cid': 'cid2'}), ] - self.attachements = self.env['ir.attachment'].with_user(self.env.user).create(self.vals) #-> 163-> 165 query + self.attachements = self.env['ir.attachment'].with_user(self.env.user).create(self.vals) attachement_ids = self.attachements.ids - with self.assertQueryCount(emp=175): # com runbot 154 // test_mail only: 133 + with self.assertQueryCount(emp=175): # com runbot 154 // test_mail only: 132 self.cr.sql_log = self.warm and self.cr.sql_log_count record.with_context({}).message_post( body='Test body
Performance Test
') + self.assertSMSNotification([{'partner': self.customer}], 'Performance Test', messages) + + @mute_logger('odoo.addons.sms.models.sms_sms') + @users('employee') + @warmup + def test_message_sms_record_10_partners(self): + record = self.test_record.with_user(self.env.user) + pids = self.partners.ids + with self.mockSMSGateway(), self.assertQueryCount(employee=40): # test_mail_enterprise: 40 + messages = record._message_sms( + body='Performance Test', + partner_ids=pids, + ) + + self.assertEqual(record.message_ids[0].body, 'Performance Test
') + self.assertSMSNotification([{'partner': partner} for partner in self.partners], 'Performance Test', messages) + + @mute_logger('odoo.addons.sms.models.sms_sms') + @users('employee') + @warmup + def test_message_sms_record_default(self): + record = self.test_record.with_user(self.env.user) + with self.mockSMSGateway(), self.assertQueryCount(employee=26): # test_mail_enterprise: 26 + messages = record._message_sms( + body='Performance Test', + ) + + self.assertEqual(record.message_ids[0].body, 'Performance Test
') + self.assertSMSNotification([{'partner': self.customer}], 'Performance Test', messages) + + +@tagged('mail_performance') +class TestSMSMassPerformance(BaseMailPerformance, sms_common.MockSMS): + + def setUp(self): + super(TestSMSMassPerformance, self).setUp() + be_country_id = self.env.ref('base.be').id, + self.user_employee.write({ + 'login': 'employee', + 'country_id': be_country_id, + }) + self.admin = self.env.user + self.admin.write({ + 'country_id': be_country_id, + }) + + self._test_body = 'MASS SMS' + + records = self.env['mail.test.sms'] + partners = self.env['res.partner'] + for x in range(50): + partners += self.env['res.partner'].with_context(**self._quick_create_ctx).create({ + 'name': 'Partner_%s' % (x), + 'email': '_test_partner_%s@example.com' % (x), + 'country_id': be_country_id, + 'mobile': '047500%s%s99' % (x, x) + }) + records += self.env['mail.test.sms'].with_context(**self._quick_create_ctx).create({ + 'name': 'Test_%s' % (x), + 'customer_id': partners[x].id, + }) + self.partners = partners + self.records = records + + self.sms_template = self.env['sms.template'].create({ + 'name': 'Test Template', + 'model_id': self.env['ir.model']._get('mail.test.sms').id, + 'body': 'Dear ${object.display_name} this is an SMS.', + }) + + @mute_logger('odoo.addons.sms.models.sms_sms') + @users('employee') + @warmup + def test_composer_mass_active_domain(self): + composer = self.env['sms.composer'].with_context( + default_composition_mode='mass', + default_res_model='mail.test.sms', + default_use_active_domain=True, + active_domain=repr([('id', 'in', self.records.ids)]), + ).create({ + 'body': self._test_body, + }) + + with self.mockSMSGateway(), self.assertQueryCount(employee=108): + composer.action_send_sms() + + # TDE FIXME + # for record in self.records: + # self.assertSMSOutgoing(record.customer_id, None, self._test_body) diff --git a/addons/test_mail_full/tests/test_sms_post.py b/addons/test_mail_full/tests/test_sms_post.py index a12855341a0..489250fde1c 100644 --- a/addons/test_mail_full/tests/test_sms_post.py +++ b/addons/test_mail_full/tests/test_sms_post.py @@ -1,54 +1,337 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +from odoo.addons.phone_validation.tools import phone_validation from odoo.addons.sms.tests import common as sms_common from odoo.addons.test_mail.tests import common as test_mail_common from odoo.addons.test_mail_full.tests import common as test_mail_full_common class TestSMSPost(test_mail_full_common.BaseFunctionalTest, sms_common.MockSMS, test_mail_common.MockEmails, test_mail_common.TestRecipients): + """ TODO + + * add tests for new mail.message and mail.thread fields; + """ @classmethod def setUpClass(cls): super(TestSMSPost, cls).setUpClass() + cls._test_body = 'VOID CONTENT' + + cls.partner_numbers = [ + phone_validation.phone_format(partner.mobile, partner.country_id.code, partner.country_id.phone_code, force_format='E164') + for partner in (cls.partner_1 | cls.partner_2) + ] + + cls.test_record = cls.env['mail.test.sms'].with_context(**cls._test_context).create({ + 'name': 'Test', + 'customer_id': cls.partner_1.id, + 'mobile_nbr': cls.test_numbers[0], + 'phone_nbr': cls.test_numbers[1], + }) + cls.test_record = cls._reset_mail_context(cls.test_record) + + def test_message_sms_internals_body(self): + with self.sudo('employee'), self.mockSMSGateway(): + test_record = self.env['mail.test.sms'].browse(self.test_record.id) + messages = test_record._message_sms('Mega SMS
Top moumoutte
Mega SMS
Top moumoutte