90 lines
3.4 KiB
Python
90 lines
3.4 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||
|
|
||
|
import json
|
||
|
|
||
|
from odoo.addons.mail_plugin.tests.common import TestMailPluginControllerCommon, mock_auth_method_outlook
|
||
|
|
||
|
|
||
|
class TestCrmMailPlugin(TestMailPluginControllerCommon):
|
||
|
@mock_auth_method_outlook('employee')
|
||
|
def test_get_contact_data(self):
|
||
|
"""Check that the leads section is not visible if the user has not access to crm.lead."""
|
||
|
partner, partner_2 = self.env["res.partner"].create([
|
||
|
{"name": "Partner 1"},
|
||
|
{"name": "Partner 2"},
|
||
|
])
|
||
|
|
||
|
result = self.make_jsonrpc_request("/mail_plugin/partner/get", {"partner_id": partner.id})
|
||
|
|
||
|
self.assertNotIn("leads", result,
|
||
|
msg="The user has no access to crm.lead, the leads section should not be visible")
|
||
|
|
||
|
self.user_test.groups_id |= self.env.ref("sales_team.group_sale_salesman_all_leads")
|
||
|
|
||
|
lead_1, lead_2 = self.env["crm.lead"].create([
|
||
|
{"name": "Lead Partner 1", "partner_id": partner.id},
|
||
|
{"name": "Lead Partner 2", "partner_id": partner_2.id},
|
||
|
])
|
||
|
|
||
|
result = self.make_jsonrpc_request("/mail_plugin/partner/get", {"partner_id": partner.id})
|
||
|
|
||
|
self.assertIn(
|
||
|
"leads",
|
||
|
result,
|
||
|
msg="The user has access to crm.lead, the leads section should be visible",
|
||
|
)
|
||
|
|
||
|
self.assertTrue([lead for lead in result["leads"] if lead["lead_id"] == lead_1.id],
|
||
|
msg="The first lead belongs to the first partner, it should be returned")
|
||
|
self.assertFalse([lead for lead in result["leads"] if lead["lead_id"] == lead_2.id],
|
||
|
msg="The second lead does not belong to the first partner, it should not be returned")
|
||
|
|
||
|
@mock_auth_method_outlook('employee')
|
||
|
def test_crm_lead_create_multi_company(self):
|
||
|
""" Test that creating a record using the mail plugin for a contact belonging to a different company than the
|
||
|
default company of the user does not result in any issues.
|
||
|
"""
|
||
|
company_a, company_b = self.env['res.company'].create([
|
||
|
{'name': 'Company_A'},
|
||
|
{'name': 'Company_B'},
|
||
|
])
|
||
|
|
||
|
# create contact belonging to Company_B
|
||
|
contact = self.env['res.partner'].create({
|
||
|
'name': 'John Doe',
|
||
|
'email': 'john.doe@example.com',
|
||
|
'company_id': company_b.id,
|
||
|
})
|
||
|
|
||
|
# set default company to Company_A
|
||
|
self.env.user.company_id = company_a.id
|
||
|
|
||
|
self.user_test.groups_id |= self.env.ref('sales_team.group_sale_salesman_all_leads')
|
||
|
|
||
|
# Add company_B to user_test to have access to records related to company_B
|
||
|
self.user_test.write({'company_ids': [(4, company_b.id)]})
|
||
|
|
||
|
params = {
|
||
|
'partner_id': contact.id,
|
||
|
'email_body': 'test body',
|
||
|
'email_subject': 'test subject',
|
||
|
}
|
||
|
|
||
|
result = self.make_jsonrpc_request('/mail_plugin/lead/create', params)
|
||
|
|
||
|
# Check that the created lead record has the correct company and return the lead_id
|
||
|
self.assertIn(
|
||
|
'lead_id',
|
||
|
result,
|
||
|
msg='The lead_id should be returned in the response',
|
||
|
)
|
||
|
|
||
|
created_lead = self.env['crm.lead'].browse(result['lead_id'])
|
||
|
|
||
|
self.assertEqual(
|
||
|
created_lead.company_id,
|
||
|
company_b,
|
||
|
msg='The created record should belong to company_B',
|
||
|
)
|