106 lines
6.9 KiB
Python
106 lines
6.9 KiB
Python
from odoo.fields import Command
|
|
from odoo.tests.common import TransactionCase, new_test_user
|
|
|
|
|
|
class TestVoipHrVoipCall(TransactionCase):
|
|
def test_is_within_same_company_true_same_company_employees(self):
|
|
company = self.env["res.company"].create({"name": "Company"})
|
|
caller_partner = self.env["res.partner"].create({"name": "Caller", "email": "[email protected]"})
|
|
caller = new_test_user(self.env, login="user", company_id=company.id, partner_id=caller_partner.id)
|
|
self.env["hr.employee"].create(
|
|
{"name": "Caller Employee", "user_id": caller.id, "company_id": company.id},
|
|
)
|
|
callee_partner = self.env["res.partner"].create({"name": "Callee", "email": "[email protected]"})
|
|
callee_employee = self.env["hr.employee"].create({"name": "Callee Employee", "company_id": company.id})
|
|
callee_partner.employee_ids = [Command.set([callee_employee.id])]
|
|
call = self.env["voip.call"].create(
|
|
{
|
|
"phone_number": "+1234567890",
|
|
"partner_id": callee_partner.id,
|
|
"user_id": caller.id,
|
|
},
|
|
)
|
|
|
|
self.assertTrue(call.is_within_same_company)
|
|
|
|
def test_is_within_same_company_false_different_company_employees(self):
|
|
company_1 = self.env["res.company"].create({"name": "Company 1"})
|
|
company_2 = self.env["res.company"].create({"name": "Company 2"})
|
|
caller_partner = self.env["res.partner"].create({"name": "Caller", "email": "[email protected]"})
|
|
caller = new_test_user(self.env, login="user", company_id=company_1.id, partner_id=caller_partner.id)
|
|
self.env["hr.employee"].create({"name": "Caller Employee", "user_id": caller.id, "company_id": company_1.id})
|
|
callee_partner = self.env["res.partner"].create({"name": "Callee", "email": "[email protected]"})
|
|
callee_employee = self.env["hr.employee"].create({"name": "Callee Employee", "company_id": company_2.id})
|
|
callee_partner.employee_ids = [Command.set([callee_employee.id])]
|
|
call = self.env["voip.call"].create(
|
|
{"phone_number": "+1234567890", "partner_id": callee_partner.id, "user_id": caller.id},
|
|
)
|
|
|
|
self.assertFalse(call.is_within_same_company)
|
|
|
|
def test_is_within_same_company_multiple_employees_per_user(self):
|
|
company_1 = self.env["res.company"].create({"name": "Company 1"})
|
|
company_2 = self.env["res.company"].create({"name": "Company 2"})
|
|
company_3 = self.env["res.company"].create({"name": "Company 3"})
|
|
caller_partner = self.env["res.partner"].create({"name": "Caller", "email": "[email protected]"})
|
|
caller = new_test_user(self.env, login="user", company_id=company_1.id, partner_id=caller_partner.id)
|
|
caller.company_ids = [Command.set([company_1.id, company_2.id, company_3.id])]
|
|
self.env["hr.employee"].create({"name": "Caller Employee 1", "user_id": caller.id, "company_id": company_1.id})
|
|
self.env["hr.employee"].create({"name": "Caller Employee 2", "user_id": caller.id, "company_id": company_2.id})
|
|
callee_1_partner = self.env["res.partner"].create({"name": "Callee 1", "email": "[email protected]"})
|
|
callee_1_employee = self.env["hr.employee"].create({"name": "Callee 1 Employee", "company_id": company_1.id})
|
|
callee_1_partner.employee_ids = [Command.set([callee_1_employee.id])]
|
|
callee_2_partner = self.env["res.partner"].create({"name": "Callee 2", "email": "[email protected]"})
|
|
callee_2_employee = self.env["hr.employee"].create({"name": "Callee 2 Employee", "company_id": company_2.id})
|
|
callee_2_partner.employee_ids = [Command.set([callee_2_employee.id])]
|
|
callee_3_partner = self.env["res.partner"].create({"name": "Callee 3", "email": "[email protected]"})
|
|
callee_3_employee = self.env["hr.employee"].create({"name": "Callee 3 Employee", "company_id": company_3.id})
|
|
callee_3_partner.employee_ids = [Command.set([callee_3_employee.id])]
|
|
|
|
call_with_callee_1 = self.env["voip.call"].create(
|
|
{"phone_number": "+1234567890", "partner_id": callee_1_partner.id, "user_id": caller.id},
|
|
)
|
|
call_with_callee_2 = self.env["voip.call"].create(
|
|
{"phone_number": "+1234567890", "partner_id": callee_2_partner.id, "user_id": caller.id},
|
|
)
|
|
call_with_callee_3 = self.env["voip.call"].create(
|
|
{"phone_number": "+1234567890", "partner_id": callee_3_partner.id, "user_id": caller.id},
|
|
)
|
|
self.assertTrue(call_with_callee_1.is_within_same_company)
|
|
self.assertTrue(call_with_callee_2.is_within_same_company)
|
|
self.assertFalse(call_with_callee_3.is_within_same_company)
|
|
|
|
def test_is_within_same_company_false_partner_no_employees(self):
|
|
company = self.env["res.company"].create({"name": "Company"})
|
|
caller_partner = self.env["res.partner"].create({"name": "Caller", "email": "[email protected]"})
|
|
caller = new_test_user(self.env, login="user", company_id=company.id, partner_id=caller_partner.id)
|
|
self.env["hr.employee"].create({"name": "Caller Employee", "user_id": caller.id, "company_id": company.id})
|
|
callee_partner = self.env["res.partner"].create({"name": "Callee", "email": "[email protected]"})
|
|
call = self.env["voip.call"].create(
|
|
{"phone_number": "+1234567890", "partner_id": callee_partner.id, "user_id": caller.id},
|
|
)
|
|
self.assertFalse(call.is_within_same_company)
|
|
|
|
def test_is_within_same_company_false_user_no_employees(self):
|
|
company = self.env["res.company"].create({"name": "Company"})
|
|
caller_partner = self.env["res.partner"].create({"name": "Caller", "email": "[email protected]"})
|
|
caller = new_test_user(self.env, login="user", company_id=company.id, partner_id=caller_partner.id)
|
|
callee_partner = self.env["res.partner"].create({"name": "Callee", "email": "[email protected]"})
|
|
callee_employee = self.env["hr.employee"].create({"name": "Callee Employee", "company_id": company.id})
|
|
callee_partner.employee_ids = [Command.set([callee_employee.id])]
|
|
call = self.env["voip.call"].create(
|
|
{"phone_number": "+1234567890", "partner_id": callee_partner.id, "user_id": caller.id},
|
|
)
|
|
self.assertFalse(call.is_within_same_company)
|
|
|
|
def test_is_within_same_company_falls_back_to_base_logic(self):
|
|
company_partner = self.env["res.partner"].create({"name": "Test Company", "is_company": True})
|
|
caller = new_test_user(self.env, login="user")
|
|
caller.partner_id.commercial_partner_id = company_partner
|
|
callee_partner = self.env["res.partner"].create({"name": "Callee", "email": "[email protected]"})
|
|
callee_partner.commercial_partner_id = company_partner
|
|
call = self.env["voip.call"].create(
|
|
{"phone_number": "+1234567890", "partner_id": callee_partner.id, "user_id": caller.id},
|
|
)
|
|
self.assertTrue(call.is_within_same_company)
|