You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
199 lines
6.9 KiB
199 lines
6.9 KiB
# -*- coding: utf-8 -*-
|
|
# Copyright 2015 Camptocamp SA
|
|
# Copyright 2016 Therp BV
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
from openerp import fields
|
|
from openerp.tests import common
|
|
from openerp.exceptions import ValidationError
|
|
|
|
|
|
class TestPartnerRelation(common.TransactionCase):
|
|
|
|
def setUp(self):
|
|
|
|
super(TestPartnerRelation, self).setUp()
|
|
|
|
self.partner_model = self.env['res.partner']
|
|
self.relation_type_model = self.env['res.partner.relation.type']
|
|
self.relation_model = self.env['res.partner.relation']
|
|
|
|
self.partner_1 = self.partner_model.create({
|
|
'name': 'Test User 1',
|
|
'is_company': False,
|
|
})
|
|
|
|
self.partner_2 = self.partner_model.create({
|
|
'name': 'Test Company',
|
|
'is_company': True,
|
|
})
|
|
|
|
self.relation_allow = self.relation_type_model.create({
|
|
'name': 'allow',
|
|
'name_inverse': 'allow_inverse',
|
|
'contact_type_left': 'p',
|
|
'contact_type_right': 'p',
|
|
'allow_self': True
|
|
})
|
|
|
|
self.relation_disallow = self.relation_type_model.create({
|
|
'name': 'disallow',
|
|
'name_inverse': 'disallow_inverse',
|
|
'contact_type_left': 'p',
|
|
'contact_type_right': 'p',
|
|
'allow_self': False
|
|
})
|
|
|
|
self.relation_default = self.relation_type_model.create({
|
|
'name': 'default',
|
|
'name_inverse': 'default_inverse',
|
|
'contact_type_left': 'p',
|
|
'contact_type_right': 'p',
|
|
})
|
|
|
|
self.relation_mixed = self.relation_type_model.create({
|
|
'name': 'mixed',
|
|
'name_inverse': 'mixed_inverse',
|
|
'contact_type_left': 'c',
|
|
'contact_type_right': 'p',
|
|
})
|
|
|
|
self.relation_symmetric = self.relation_type_model.create({
|
|
'name': 'sym',
|
|
'name_inverse': 'sym',
|
|
'symmetric': True,
|
|
})
|
|
|
|
def test_self_allowed(self):
|
|
self.relation_model.create({
|
|
'type_id': self.relation_allow.id,
|
|
'left_partner_id': self.partner_1.id,
|
|
'right_partner_id': self.partner_1.id,
|
|
})
|
|
|
|
def test_self_disallowed(self):
|
|
with self.assertRaises(ValidationError):
|
|
self.relation_model.create({
|
|
'type_id': self.relation_disallow.id,
|
|
'left_partner_id': self.partner_1.id,
|
|
'right_partner_id': self.partner_1.id,
|
|
})
|
|
|
|
def test_self_default(self):
|
|
with self.assertRaises(ValidationError):
|
|
self.relation_model.create({
|
|
'type_id': self.relation_default.id,
|
|
'left_partner_id': self.partner_1.id,
|
|
'right_partner_id': self.partner_1.id,
|
|
})
|
|
|
|
def test_self_mixed(self):
|
|
with self.assertRaises(ValidationError):
|
|
self.relation_model.create({
|
|
'type_id': self.relation_mixed.id,
|
|
'left_partner_id': self.partner_1.id,
|
|
'right_partner_id': self.partner_2.id,
|
|
})
|
|
|
|
def test_searching(self):
|
|
relation = self.relation_model.create({
|
|
'type_id': self.relation_mixed.id,
|
|
'left_partner_id': self.partner_2.id,
|
|
'right_partner_id': self.partner_1.id,
|
|
})
|
|
partners = self.env['res.partner'].search([
|
|
('search_relation_id', '=', relation.type_selection_id.id)
|
|
])
|
|
self.assertTrue(self.partner_2 in partners)
|
|
|
|
partners = self.env['res.partner'].search([
|
|
('search_relation_id', '!=', relation.type_selection_id.id)
|
|
])
|
|
self.assertTrue(self.partner_1 in partners)
|
|
|
|
partners = self.env['res.partner'].search([
|
|
('search_relation_id', '=', self.relation_mixed.name)
|
|
])
|
|
self.assertTrue(self.partner_1 in partners)
|
|
self.assertTrue(self.partner_2 in partners)
|
|
|
|
partners = self.env['res.partner'].search([
|
|
('search_relation_id', '=', 'unknown relation')
|
|
])
|
|
self.assertFalse(partners)
|
|
|
|
partners = self.env['res.partner'].search([
|
|
('search_relation_partner_id', '=', self.partner_2.id),
|
|
])
|
|
self.assertTrue(self.partner_1 in partners)
|
|
|
|
partners = self.env['res.partner'].search([
|
|
('search_relation_date', '=', fields.Date.today()),
|
|
])
|
|
self.assertTrue(self.partner_1 in partners)
|
|
self.assertTrue(self.partner_2 in partners)
|
|
|
|
def test_ui_functions(self):
|
|
relation = self.relation_model.create({
|
|
'type_id': self.relation_mixed.id,
|
|
'left_partner_id': self.partner_2.id,
|
|
'right_partner_id': self.partner_1.id,
|
|
})
|
|
self.assertEqual(relation.type_selection_id.type_id, relation.type_id)
|
|
relation = relation.with_context(
|
|
active_id=self.partner_1.id,
|
|
active_ids=self.partner_1.ids,
|
|
active_model='res.partner.relation',
|
|
)
|
|
relation.read()
|
|
domain = relation._onchange_type_selection_id()['domain']
|
|
self.assertTrue(
|
|
('is_company', '=', True) in domain['partner_id_display']
|
|
)
|
|
relation.write({
|
|
'type_selection_id': relation.type_selection_id.id,
|
|
})
|
|
action = relation.get_action_related_partners()
|
|
self.assertTrue(self.partner_1.id in action['domain'][0][2])
|
|
|
|
def test_relation_all(self):
|
|
relation_all_record = self.env['res.partner.relation.all']\
|
|
.with_context(
|
|
active_id=self.partner_2.id,
|
|
active_ids=self.partner_2.ids,
|
|
).create({
|
|
'other_partner_id': self.partner_1.id,
|
|
'type_selection_id': self.relation_mixed.id * 10,
|
|
})
|
|
self.assertEqual(
|
|
relation_all_record.display_name, '%s %s %s' % (
|
|
self.partner_2.name,
|
|
'mixed',
|
|
self.partner_1.name,
|
|
)
|
|
)
|
|
|
|
domain = relation_all_record.onchange_type_selection_id()['domain']
|
|
self.assertTrue(
|
|
('is_company', '=', False) in domain['other_partner_id'])
|
|
domain = relation_all_record.onchange_this_partner_id()['domain']
|
|
self.assertTrue(
|
|
('contact_type_this', '=', 'c') in domain['type_selection_id'])
|
|
|
|
relation_all_record.write({
|
|
'type_id': self.relation_mixed.id,
|
|
})
|
|
relation = relation_all_record.relation_id
|
|
relation_all_record.unlink()
|
|
self.assertFalse(relation.exists())
|
|
|
|
def test_symmetric(self):
|
|
relation = self.relation_model.create({
|
|
'type_id': self.relation_symmetric.id,
|
|
'left_partner_id': self.partner_2.id,
|
|
'right_partner_id': self.partner_1.id,
|
|
})
|
|
partners = self.env['res.partner'].search([
|
|
('search_relation_id', '=', relation.type_selection_id.id)
|
|
])
|
|
self.assertTrue(self.partner_1 in partners)
|
|
self.assertTrue(self.partner_2 in partners)
|