[IMP] sales_team: improve default team fetch tests
Purpose of this commit is to improve a bit tests about default team computation. Coverage is improved, notably about default context value usage that is about to be updated. Task-2852947 X-original-commit: 8e18a27352d2fd9e68cd2b54e49dfca6fb658eaa Part-of: odoo/odoo#94045
This commit is contained in:
committed by
mafo-odoo
parent
71a68c5923
commit
741a7e376e
@@ -13,6 +13,26 @@ class TestDefaultTeam(TestSalesCommon):
|
||||
def setUpClass(cls):
|
||||
"""Set up data for default team tests."""
|
||||
super(TestDefaultTeam, cls).setUpClass()
|
||||
cls.env['ir.config_parameter'].set_param('sales_team.membership_multi', True)
|
||||
|
||||
# Salesmen organization
|
||||
# ------------------------------------------------------------
|
||||
# Role: M (team member) R (team manager)
|
||||
# SALESMAN---------------sales_team_1---C2Team1---LowSequ---Team3
|
||||
# admin------------------M-------------- --------- ---------
|
||||
# user_sales_manager-----R-------------- --------- ---------R
|
||||
# user_sales_leads-------M-------------- ---------M---------
|
||||
# user_sales_salesman----/-------------- --------- ---------
|
||||
|
||||
# Sales teams organization
|
||||
# ------------------------------------------------------------
|
||||
# SALESTEAM-----------SEQU-----COMPANY
|
||||
# LowSequence---------0--------False
|
||||
# C2Team1-------------1--------C2
|
||||
# Team3---------------3--------Main
|
||||
# sales_team_1--------5--------False
|
||||
# data----------------9999-----??
|
||||
|
||||
cls.company_2 = cls.env['res.company'].create({
|
||||
'name': 'New Test Company',
|
||||
'email': 'company.2@test.example.com',
|
||||
@@ -22,35 +42,31 @@ class TestDefaultTeam(TestSalesCommon):
|
||||
'name': 'C2 Team1',
|
||||
'sequence': 1,
|
||||
'company_id': cls.company_2.id,
|
||||
'user_id': False,
|
||||
})
|
||||
cls.team_sequence = cls.env['crm.team'].create({
|
||||
'name': 'Team LowSequence',
|
||||
'sequence': 0,
|
||||
'company_id': False,
|
||||
'name': 'Team LowSequence',
|
||||
'member_ids': [(4, cls.user_sales_leads.id)],
|
||||
'sequence': 0,
|
||||
'user_id': False,
|
||||
})
|
||||
cls.team_responsible = cls.env['crm.team'].create({
|
||||
'company_id': cls.company_main.id,
|
||||
'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 """
|
||||
""" Test fallbacks when computing default team without any memberships:
|
||||
domain, order """
|
||||
self.sales_team_1.member_ids = [(5,)]
|
||||
self.sales_team_1.flush_model()
|
||||
self.team_sequence.member_ids = [(5,)]
|
||||
(self.sales_team_1 + self.team_sequence).flush_model()
|
||||
self.assertFalse(self.env['crm.team.member'].search([('user_id', '=', self.user_sales_leads.id)]))
|
||||
|
||||
# default is better sequence matching company criterion
|
||||
with self.with_user('user_sales_leads'):
|
||||
team = self.env['crm.team']._get_default_team_id()
|
||||
self.assertEqual(team, self.team_sequence)
|
||||
@@ -66,11 +82,70 @@ class TestDefaultTeam(TestSalesCommon):
|
||||
'company_id': self.company_2.id,
|
||||
})
|
||||
# multi company: switch company
|
||||
self.user_sales_leads.write({'company_id': self.company_2.id})
|
||||
self.user_sales_leads.write({
|
||||
'company_id': self.company_2.id,
|
||||
'company_ids': [(4, 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)
|
||||
|
||||
def test_default_team_member(self):
|
||||
""" Test default team choice based on sequence, when having several
|
||||
possible choices due to membership """
|
||||
with self.with_user('user_sales_leads'):
|
||||
team = self.env['crm.team']._get_default_team_id()
|
||||
self.assertEqual(team, self.team_sequence)
|
||||
|
||||
self.team_sequence.member_ids = [(5,)]
|
||||
self.team_sequence.flush_model()
|
||||
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)
|
||||
|
||||
# in case of same sequence: take latest team
|
||||
self.team_responsible.sequence = self.sales_team_1.sequence
|
||||
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_wcontext(self):
|
||||
""" Test default team choice when having a value in context """
|
||||
with self.with_user('user_sales_leads'):
|
||||
team = self.env['crm.team']._get_default_team_id()
|
||||
self.assertEqual(team, self.team_sequence)
|
||||
|
||||
team = self.env['crm.team'].with_context(
|
||||
default_team_id=self.sales_team_1.id
|
||||
)._get_default_team_id()
|
||||
self.assertEqual(
|
||||
team, self.team_sequence,
|
||||
'SalesTeam: default not taken into account if member / responsible'
|
||||
)
|
||||
|
||||
# remove all memberships
|
||||
self.sales_team_1.member_ids = [(5,)]
|
||||
self.team_sequence.member_ids = [(5,)]
|
||||
(self.sales_team_1 + self.team_sequence).flush_model()
|
||||
self.assertFalse(self.env['crm.team.member'].search([('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_sequence)
|
||||
|
||||
team = self.env['crm.team'].with_context(
|
||||
default_team_id=self.sales_team_1.id
|
||||
)._get_default_team_id()
|
||||
self.assertEqual(
|
||||
team, self.sales_team_1,
|
||||
'SalesTeam: default taken into account when no member / responsible'
|
||||
)
|
||||
|
||||
class TestMultiCompany(TestSalesMC):
|
||||
"""Tests to check multi company management with sales team and their
|
||||
|
||||
Reference in New Issue
Block a user