diff options
| author | Thibault Delavallée <tde@odoo.com> | 2020-01-24 16:31:03 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2020-01-27 09:40:17 +0000 |
| commit | 8062b760a4a32829e63246278d3a0df80687c68a (patch) | |
| tree | b129aa59e1561bcc25f7c55270b9e5064a7b08cc /addons/sale_crm | |
| parent | 9c19db3e35084023960ac67f154be315b3ba5cb0 (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/sale_crm')
| -rw-r--r-- | addons/sale_crm/__init__.py | 1 | ||||
| -rw-r--r-- | addons/sale_crm/tests/__init__.py | 4 | ||||
| -rw-r--r-- | addons/sale_crm/tests/test_crm_lead_convert_quotation.py | 100 |
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) |
