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.
 
 

64 lines
2.5 KiB

# Copyright 2016 Yannick Vaucher (Camptocamp SA)
# Copyright 2020 Therp BV - https://therp.nl.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo.tests.common import Form, TransactionCase
class UserOnchangeCase(TransactionCase):
def test_create_from_form_only_firstname(self):
"""In a new users form, a user set only the firstname."""
login = "Zoë"
firstname = "Zoë"
with self.get_clean_user_form() as user_form:
user_form.login = login
# Changes firstname, which triggers onchanges
user_form.firstname = firstname
self.assertEqual(user_form.lastname, False)
self.assertEqual(user_form.firstname, firstname)
self.assertEqual(user_form.name, firstname)
def test_create_from_form_only_lastname(self):
"""In a new user form, a user set only the lastname."""
login = "Żywioł"
lastname = "Żywioł"
with self.get_clean_user_form() as user_form:
user_form.login = login
# Changes lastname, which triggers onchanges
user_form.lastname = lastname
self.assertEqual(user_form.firstname, False)
self.assertEqual(user_form.lastname, lastname)
self.assertEqual(user_form.name, lastname)
def test_create_from_form_all(self):
"""In a new user form, a user set all names."""
login = "Zoë.Żywioł"
firstname = "Zoë"
lastname = "Żywioł"
with self.get_clean_user_form() as user_form:
user_form.login = login
# Changes firstname, which triggers onchanges
user_form.firstname = firstname
# Changes lastname, which triggers onchanges
user_form.lastname = lastname
self.assertEqual(user_form.lastname, lastname)
self.assertEqual(user_form.firstname, firstname)
self.assertEqual(user_form.name, " ".join((firstname, lastname)))
def get_clean_user_form(self):
"""Get form without pseudo_fields.
This will be needed until Odoo Form does weed out these fields by itself.
"""
form = Form(self.env["res.users"], view="partner_firstname.view_users_form")
pseudo_fields = [
fieldname
for fieldname in form._view["fields"].keys()
if fieldname[:11] == "sel_groups_" or fieldname[:9] == "in_group_"
]
for fieldname in pseudo_fields:
del form._view["fields"][fieldname]
del form._values[fieldname]
return form