summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2020-01-24 16:31:03 +0000
committerThibault Delavallée <tde@odoo.com>2020-01-27 09:40:17 +0000
commit8062b760a4a32829e63246278d3a0df80687c68a (patch)
treeb129aa59e1561bcc25f7c55270b9e5064a7b08cc /addons
parent9c19db3e35084023960ac67f154be315b3ba5cb0 (diff)
[IMP] sale_crm: add tests for lead to quotation convert wizard
PURPOSE As crm will soon evolve (onchange -> compute, code improvements, better management of sales teams) cleaning and improving tests is necessary to avoid regressions. SPECIFICATIONS Add tests for wizard about converting lead to quotation. Indeed currently there are no tests. This wizard does not do much things but it is always better to ensure it will not be broken after some code update, especially that it deals with partner data. LINKS Task ID 2181811 PR #43946 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Diffstat (limited to 'addons')
-rw-r--r--addons/sale_crm/__init__.py1
-rw-r--r--addons/sale_crm/tests/__init__.py4
-rw-r--r--addons/sale_crm/tests/test_crm_lead_convert_quotation.py100
3 files changed, 105 insertions, 0 deletions
diff --git a/addons/sale_crm/__init__.py b/addons/sale_crm/__init__.py
index ab491732dfe..aec94150dc4 100644
--- a/addons/sale_crm/__init__.py
+++ b/addons/sale_crm/__init__.py
@@ -2,6 +2,7 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import models
+from . import tests
from . import wizard
from odoo import api, SUPERUSER_ID
diff --git a/addons/sale_crm/tests/__init__.py b/addons/sale_crm/tests/__init__.py
new file mode 100644
index 00000000000..da4d8ac13b2
--- /dev/null
+++ b/addons/sale_crm/tests/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import test_crm_lead_convert_quotation
diff --git a/addons/sale_crm/tests/test_crm_lead_convert_quotation.py b/addons/sale_crm/tests/test_crm_lead_convert_quotation.py
new file mode 100644
index 00000000000..0032bad11c4
--- /dev/null
+++ b/addons/sale_crm/tests/test_crm_lead_convert_quotation.py
@@ -0,0 +1,100 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+
+from odoo.addons.crm.tests import common as crm_common
+from odoo.tests.common import tagged, users
+
+
+@tagged('lead_manage')
+class TestLeadConvertToTicket(crm_common.TestCrmCommon):
+
+ @classmethod
+ def setUpClass(cls):
+ super(TestLeadConvertToTicket, cls).setUpClass()
+ cls.lead_1.write({
+ 'user_id': cls.user_sales_salesman.id,
+ })
+
+ @users('user_sales_salesman')
+ def test_lead_convert_to_quotation_create(self):
+ """ Test partner creation while converting """
+ # Perform initial tests, do not repeat them at each test
+ lead = self.lead_1.with_user(self.env.user)
+ self.assertEqual(lead.partner_id, self.env['res.partner'])
+ new_partner = self.env['res.partner'].search([('email_normalized', '=', 'amy.wong@test.example.com')])
+ self.assertEqual(new_partner, self.env['res.partner'])
+
+ # invoke wizard and apply it
+ convert = self.env['crm.quotation.partner'].with_context({
+ 'active_model': 'crm.lead',
+ 'active_id': lead.id
+ }).create({})
+
+ self.assertEqual(convert.action, 'create')
+ self.assertEqual(convert.partner_id, self.env['res.partner'])
+
+ action = convert.action_apply()
+
+ # test lead update
+ new_partner = self.env['res.partner'].search([('email_normalized', '=', 'amy.wong@test.example.com')])
+ self.assertEqual(lead.partner_id, new_partner)
+
+ # test wizard action (does not create anything, just returns action)
+ self.assertEqual(action['res_model'], 'sale.order')
+ self.assertEqual(action['context']['default_partner_id'], new_partner.id)
+
+ @users('user_sales_salesman')
+ def test_lead_convert_to_quotation_exist(self):
+ """ Test taking only existing customer while converting """
+ lead = self.lead_1.with_user(self.env.user)
+
+ # invoke wizard and apply it
+ convert = self.env['crm.quotation.partner'].with_context({
+ 'active_model': 'crm.lead',
+ 'active_id': lead.id
+ }).create({'action': 'exist'})
+
+ self.assertEqual(convert.action, 'exist')
+ self.assertEqual(convert.partner_id, self.env['res.partner'])
+
+ action = convert.action_apply()
+
+ # test lead update
+ new_partner = self.env['res.partner'].search([('email_normalized', '=', 'amy.wong@test.example.com')])
+ self.assertEqual(new_partner, self.env['res.partner'])
+
+ convert.write({'partner_id': self.contact_2.id})
+ action = convert.action_apply()
+
+ # test lead update
+ new_partner = self.env['res.partner'].search([('email_normalized', '=', 'amy.wong@test.example.com')])
+ self.assertEqual(new_partner, self.env['res.partner'])
+ self.assertEqual(lead.partner_id, self.contact_2)
+ # TDE TODO: have a real sync assert for lead / contact
+ self.assertEqual(lead.email_from, self.contact_2.email)
+ self.assertEqual(lead.mobile, self.contact_2.mobile)
+ self.assertEqual(action['context']['default_partner_id'], self.contact_2.id)
+
+ @users('user_sales_salesman')
+ def test_lead_convert_to_quotation_nothing(self):
+ """ Test doing nothing about customer while converting """
+ lead = self.lead_1.with_user(self.env.user)
+
+ # invoke wizard and apply it
+ convert = self.env['crm.quotation.partner'].with_context({
+ 'active_model': 'crm.lead',
+ 'active_id': lead.id,
+ 'default_action': 'nothing',
+ }).create({})
+
+ self.assertEqual(convert.action, 'nothing')
+ self.assertEqual(convert.partner_id, self.env['res.partner'])
+
+ action = convert.action_apply()
+
+ # test lead update
+ new_partner = self.env['res.partner'].search([('email_normalized', '=', 'amy.wong@test.example.com')])
+ self.assertEqual(new_partner, self.env['res.partner'])
+ self.assertEqual(lead.partner_id, self.env['res.partner'])
+ self.assertEqual(action['context']['default_partner_id'], False)