# Copyright 2016 Yannick Vaucher (Camptocamp SA)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo.tests.common import TransactionCase


class UserOnchangeCase(TransactionCase):

    def test_create_from_form_only_firstname(self):
        """In a new users form, a user set only the firstname."""
        firstname = "Zoë"
        with self.env.do_in_onchange():
            # Changes firstname, which triggers onchanges
            self.user.firstname = firstname
            self.user._compute_name()

            self.assertEqual(self.user.lastname, False)
            self.assertEqual(self.user.firstname, firstname)
            self.assertEqual(self.user.name, firstname)

    def test_create_from_form_only_lastname(self):
        """In a new user form, a user set only the lastname."""
        lastname = "Żywioł"
        with self.env.do_in_onchange():
            # Changes lastname, which triggers onchanges
            self.user.lastname = lastname
            self.user._compute_name()

            self.assertEqual(self.user.firstname, False)
            self.assertEqual(self.user.lastname, lastname)
            self.assertEqual(self.user.name, lastname)

    def test_create_from_form_all(self):
        """In a new user form, a user set all names."""
        firstname = "Zoë"
        lastname = "Żywioł"
        with self.env.do_in_onchange():
            # Changes firstname, which triggers onchanges
            self.user.firstname = firstname
            self.user._compute_name()

            # Changes lastname, which triggers onchanges
            self.user.lastname = lastname
            self.user._compute_name()

            self.assertEqual(self.user.lastname, lastname)
            self.assertEqual(self.user.firstname, firstname)
            self.assertEqual(self.user.name, " ".join((firstname, lastname)))

    def setUp(self):
        super(UserOnchangeCase, self).setUp()
        self.user = self.env["res.users"].new()