154 lines
6.1 KiB
Python
154 lines
6.1 KiB
Python
|
# # -*- coding: utf-8 -*-
|
||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||
|
|
||
|
from odoo.tests.common import TransactionCase, tagged
|
||
|
|
||
|
|
||
|
@tagged('post_install', '-at_install', 'privacy')
|
||
|
class TestPrivacyWizard(TransactionCase):
|
||
|
|
||
|
@classmethod
|
||
|
def setUpClass(cls):
|
||
|
super().setUpClass()
|
||
|
cls.partner = cls.env['res.partner'].create({
|
||
|
'name': 'Rintin Tin',
|
||
|
'email': 'rintin.tin@gmail.com'})
|
||
|
|
||
|
def test_wizard(self):
|
||
|
wizard = self.env['privacy.lookup.wizard'].with_context(
|
||
|
default_email=self.partner.email,
|
||
|
default_name=self.partner.name,
|
||
|
).create({})
|
||
|
|
||
|
# Lookup
|
||
|
wizard.action_lookup()
|
||
|
self.assertEqual(len(wizard.line_ids), 1)
|
||
|
self.assertEqual(wizard.line_ids.res_id, self.partner.id)
|
||
|
self.assertEqual(wizard.line_ids.res_model, self.partner._name)
|
||
|
self.assertFalse(wizard.log_id)
|
||
|
|
||
|
# Archive
|
||
|
wizard.line_ids.is_active = False
|
||
|
wizard.line_ids._onchange_is_active()
|
||
|
self.assertFalse(self.partner.active)
|
||
|
self.assertEqual(wizard.execution_details, 'Archived Contact #%s' % (self.partner.id))
|
||
|
self.assertTrue(wizard.log_id)
|
||
|
self.assertEqual(wizard.log_id.anonymized_name, 'R***** T**')
|
||
|
self.assertEqual(wizard.log_id.anonymized_email, 'r*****.t**@gmail.com')
|
||
|
self.assertEqual(wizard.log_id.execution_details, 'Archived Contact #%s' % (self.partner.id))
|
||
|
self.assertEqual(wizard.log_id.records_description, 'Contact (1): #%s' % (self.partner.id))
|
||
|
|
||
|
# Delete
|
||
|
wizard.line_ids.action_unlink()
|
||
|
self.assertEqual(wizard.execution_details, 'Deleted Contact #%s' % (self.partner.id))
|
||
|
self.assertEqual(wizard.log_id.execution_details, 'Deleted Contact #%s' % (self.partner.id))
|
||
|
|
||
|
def test_wizard_multi_company(self):
|
||
|
# Check that the record is spotted, even if not available on the Reference field
|
||
|
self.env['ir.rule'].create({
|
||
|
'name': 'Multi-Company Rule',
|
||
|
'model_id': self.env.ref('base.model_res_partner').id,
|
||
|
'domain_force': "['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]"
|
||
|
})
|
||
|
company_2 = self.env['res.company'].create({'name': 'Company 2'})
|
||
|
other_partner = self.env['res.partner'].create({
|
||
|
'name': 'Rintin Tin',
|
||
|
'email': 'rintin.tin@gmail.com',
|
||
|
'company_id': company_2.id
|
||
|
})
|
||
|
self.assertNotEqual(self.partner.company_id, other_partner.company_id)
|
||
|
|
||
|
wizard = self.env['privacy.lookup.wizard'].with_context(
|
||
|
default_email=self.partner.email,
|
||
|
default_name=self.partner.name,
|
||
|
).with_user(self.env.ref('base.user_admin')).create({})
|
||
|
|
||
|
# Lookup
|
||
|
wizard.action_lookup()
|
||
|
self.assertEqual(len(wizard.line_ids), 2)
|
||
|
partner_line = wizard.line_ids.filtered(lambda l: l.resource_ref == self.partner)
|
||
|
self.assertTrue(partner_line)
|
||
|
self.assertEqual((wizard.line_ids - partner_line).resource_ref, None)
|
||
|
|
||
|
def test_wizard_direct_reference(self):
|
||
|
bank = self.env['res.bank'].create({
|
||
|
'name': 'ING',
|
||
|
'bic': 'BBRUBEBB',
|
||
|
'email': 'rintin.tin@gmail.com'
|
||
|
})
|
||
|
|
||
|
wizard = self.env['privacy.lookup.wizard'].with_context(
|
||
|
default_email=self.partner.email,
|
||
|
default_name=self.partner.name,
|
||
|
).create({})
|
||
|
|
||
|
# Lookup
|
||
|
wizard.action_lookup()
|
||
|
self.assertEqual(len(wizard.line_ids), 2)
|
||
|
self.assertEqual(wizard.line_ids[0].res_id, self.partner.id)
|
||
|
self.assertEqual(wizard.line_ids[0].res_model, self.partner._name)
|
||
|
|
||
|
self.assertEqual(wizard.line_ids[1].res_id, bank.id)
|
||
|
self.assertEqual(wizard.line_ids[1].res_model, bank._name)
|
||
|
|
||
|
def test_wizard_indirect_reference(self):
|
||
|
self.env.company.partner_id = self.partner
|
||
|
|
||
|
wizard = self.env['privacy.lookup.wizard'].with_context(
|
||
|
default_email=self.partner.email,
|
||
|
default_name=self.partner.name,
|
||
|
).create({})
|
||
|
|
||
|
# Lookup
|
||
|
wizard.action_lookup()
|
||
|
self.assertEqual(len(wizard.line_ids), 2)
|
||
|
self.assertEqual(wizard.line_ids[0].res_id, self.partner.id)
|
||
|
self.assertEqual(wizard.line_ids[0].res_model, self.partner._name)
|
||
|
|
||
|
self.assertEqual(wizard.line_ids[1].res_id, self.env.company.id)
|
||
|
self.assertEqual(wizard.line_ids[1].res_model, self.env.company._name)
|
||
|
|
||
|
def test_wizard_indirect_reference_cascade(self):
|
||
|
# Don't retrieve ondelete cascade records
|
||
|
self.env["res.partner.bank"].create({
|
||
|
'acc_number': '0123-%s' % self.partner.id,
|
||
|
'partner_id': self.partner.id,
|
||
|
'company_id': self.env.company.id
|
||
|
})
|
||
|
|
||
|
wizard = self.env['privacy.lookup.wizard'].with_context(
|
||
|
default_email=self.partner.email,
|
||
|
default_name=self.partner.name,
|
||
|
).create({})
|
||
|
|
||
|
# Lookup
|
||
|
wizard.action_lookup()
|
||
|
self.assertEqual(len(wizard.line_ids), 1)
|
||
|
self.assertEqual(wizard.line_ids[0].res_id, self.partner.id)
|
||
|
self.assertEqual(wizard.line_ids[0].res_model, self.partner._name)
|
||
|
|
||
|
def test_wizard_unique_log(self):
|
||
|
# Check that the log remains unique
|
||
|
self.env['res.partner'].create({
|
||
|
'name': 'Rintin Tin',
|
||
|
'email': 'rintin.tin@gmail.com'})
|
||
|
|
||
|
wizard = self.env['privacy.lookup.wizard'].with_context(
|
||
|
default_email=self.partner.email,
|
||
|
default_name=self.partner.name,
|
||
|
).create({})
|
||
|
|
||
|
# Lookup
|
||
|
wizard.action_lookup()
|
||
|
self.assertEqual(len(wizard.line_ids), 2)
|
||
|
|
||
|
wizard.line_ids[0].is_active = False
|
||
|
wizard.line_ids[0]._onchange_is_active()
|
||
|
wizard.execution_details
|
||
|
self.assertEqual(1, self.env['privacy.log'].search_count([('anonymized_email', '=', 'r*****.t**@gmail.com')]))
|
||
|
|
||
|
wizard.line_ids[1].is_active = False
|
||
|
wizard.line_ids[1]._onchange_is_active()
|
||
|
wizard.execution_details
|
||
|
self.assertEqual(1, self.env['privacy.log'].search_count([('anonymized_email', '=', 'r*****.t**@gmail.com')]))
|