From 42b8a15e5e40583ae4e31249dd13c80ac402d3f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 23 Dec 2020 09:59:50 +0000 Subject: [PATCH] [FIX][IMP] test: improve usage of new_test_user tool Allow a False email as valid valid. Generate an email only if not given but keep void values. Ensure company_id / company_ids match, notably to ease creation of users in a multi company test environment. LINKS Task ID-2421795 COM PR odoo/odoo#63677 X-original-commit: 21999058800957a08c5e129c527afe6b84812a8a --- odoo/tests/common.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/odoo/tests/common.py b/odoo/tests/common.py index fd68fd3d36e..81091a0a659 100644 --- a/odoo/tests/common.py +++ b/odoo/tests/common.py @@ -135,13 +135,18 @@ def new_test_user(env, login='', groups='base.group_user', context=None, **kwarg groups_id = [(6, 0, [env.ref(g.strip()).id for g in groups.split(',')])] create_values = dict(kwargs, login=login, groups_id=groups_id) + # automatically generate a name as "Login (groups)" to ease user comprehension if not create_values.get('name'): create_values['name'] = '%s (%s)' % (login, groups) - if not create_values.get('email'): + # generate email if not given as most test require an email + if 'email' not in create_values: if single_email_re.match(login): create_values['email'] = login else: create_values['email'] = '%s.%s@example.com' % (login[0], login[0]) + # ensure company_id + allowed company constraint works if not given at create + if 'company_id' in create_values and 'company_ids' not in create_values: + create_values['company_ids'] = [(4, create_values['company_id'])] return env['res.users'].with_context(**context).create(create_values)