summaryrefslogtreecommitdiff
path: root/addons/sales_team/tests
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/sales_team/tests
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/sales_team/tests')
-rw-r--r--addons/sales_team/tests/__init__.py5
-rw-r--r--addons/sales_team/tests/common.py78
-rw-r--r--addons/sales_team/tests/test_sales_team_membership.py60
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)