diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/sales_team/tests | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/sales_team/tests')
| -rw-r--r-- | addons/sales_team/tests/__init__.py | 5 | ||||
| -rw-r--r-- | addons/sales_team/tests/common.py | 78 | ||||
| -rw-r--r-- | addons/sales_team/tests/test_sales_team_membership.py | 60 |
3 files changed, 143 insertions, 0 deletions
diff --git a/addons/sales_team/tests/__init__.py b/addons/sales_team/tests/__init__.py new file mode 100644 index 00000000..82803412 --- /dev/null +++ b/addons/sales_team/tests/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import common +from . import test_sales_team_membership diff --git a/addons/sales_team/tests/common.py b/addons/sales_team/tests/common.py new file mode 100644 index 00000000..8c379547 --- /dev/null +++ b/addons/sales_team/tests/common.py @@ -0,0 +1,78 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.addons.mail.tests.common import mail_new_test_user +from odoo.tests.common import SavepointCase + + +class TestSalesCommon(SavepointCase): + + @classmethod + def setUpClass(cls): + super(TestSalesCommon, cls).setUpClass() + + # Salesmen organization + # ------------------------------------------------------------ + # Role: M (team member) R (team manager) + # SALESMAN---------------sales_team_1 + # admin------------------M----------- + # user_sales_manager-----R----------- + # user_sales_leads-------M----------- + # user_sales_salesman----/----------- + + # Sales teams organization + # ------------------------------------------------------------ + # SALESTEAM-----------SEQU-----COMPANY + # sales_team_1--------5--------False + # data----------------9999-----?? + + cls.company_main = cls.env.user.company_id + cls.user_sales_manager = mail_new_test_user( + cls.env, login='user_sales_manager', + name='Martin Sales Manager', email='crm_manager@test.example.com', + company_id=cls.company_main.id, + notification_type='inbox', + groups='sales_team.group_sale_manager,base.group_partner_manager', + ) + cls.user_sales_leads = mail_new_test_user( + cls.env, login='user_sales_leads', + name='Laetitia Sales Leads', email='crm_leads@test.example.com', + company_id=cls.company_main.id, + notification_type='inbox', + groups='sales_team.group_sale_salesman_all_leads,base.group_partner_manager', + ) + cls.user_sales_salesman = mail_new_test_user( + cls.env, login='user_sales_salesman', + name='Orteil Sales Own', email='crm_salesman@test.example.com', + company_id=cls.company_main.id, + notification_type='inbox', + groups='sales_team.group_sale_salesman', + ) + cls.user_admin = cls.env.ref('base.user_admin') + + cls.env['crm.team'].search([]).write({'sequence': 9999}) + cls.sales_team_1 = cls.env['crm.team'].create({ + 'name': 'Test Sales Team', + 'sequence': 5, + 'company_id': False, + 'user_id': cls.user_sales_manager.id, + 'member_ids': [(4, cls.user_sales_leads.id), (4, cls.user_admin.id)], + }) + + +class TestSalesMC(TestSalesCommon): + """ Multi Company / Multi Sales Team environment """ + + @classmethod + def setUpClass(cls): + super(TestSalesMC, cls).setUpClass() + cls.company_2 = cls.env['res.company'].create({ + 'name': 'New Test Company', + 'email': 'company.2@test.example.com', + 'country_id': cls.env.ref('base.fr').id, + }) + cls.team_c2 = cls.env['crm.team'].create({ + 'name': 'C2 Team1', + 'sequence': 1, + 'company_id': cls.company_2.id, + }) diff --git a/addons/sales_team/tests/test_sales_team_membership.py b/addons/sales_team/tests/test_sales_team_membership.py new file mode 100644 index 00000000..8e081789 --- /dev/null +++ b/addons/sales_team/tests/test_sales_team_membership.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.addons.sales_team.tests.common import TestSalesMC + + +class TestDefaultTeam(TestSalesMC): + """Tests to check if correct default team is found.""" + + @classmethod + def setUpClass(cls): + """Set up data for default team tests.""" + super(TestDefaultTeam, cls).setUpClass() + + cls.team_sequence = cls.env['crm.team'].create({ + 'name': 'Team LowSequence', + 'sequence': 0, + 'company_id': False, + }) + cls.team_responsible = cls.env['crm.team'].create({ + 'name': 'Team 3', + 'user_id': cls.user_sales_manager.id, + 'sequence': 3, + 'company_id': cls.company_main.id + }) + + def test_default_team_member(self): + with self.with_user('user_sales_leads'): + team = self.env['crm.team']._get_default_team_id() + self.assertEqual(team, self.sales_team_1) + + # responsible with lower sequence better than member with higher sequence + self.team_responsible.user_id = self.user_sales_leads.id + with self.with_user('user_sales_leads'): + team = self.env['crm.team']._get_default_team_id() + self.assertEqual(team, self.team_responsible) + + def test_default_team_fallback(self): + """ Test fallback: domain, order """ + self.sales_team_1.member_ids = [(5,)] + + with self.with_user('user_sales_leads'): + team = self.env['crm.team']._get_default_team_id() + self.assertEqual(team, self.team_sequence) + + # next one is team_responsible with sequence = 3 (team_c2 is in another company) + self.team_sequence.active = False + with self.with_user('user_sales_leads'): + team = self.env['crm.team']._get_default_team_id() + self.assertEqual(team, self.team_responsible) + + self.user_sales_leads.write({ + 'company_ids': [(4, self.company_2.id)], + 'company_id': self.company_2.id, + }) + # multi company: switch company + self.user_sales_leads.write({'company_id': self.company_2.id}) + with self.with_user('user_sales_leads'): + team = self.env['crm.team']._get_default_team_id() + self.assertEqual(team, self.team_c2) |
