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.
221 lines
7.4 KiB
221 lines
7.4 KiB
# -*- coding: utf-8 -*-
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
# © 2015 Grupo ESOC Ingeniería de Servicios, S.L.U.
|
|
# © 2015 Antiun Ingenieria S.L. - Antonio Espinosa
|
|
|
|
"""These tests try to mimic the behavior of the UI form.
|
|
|
|
The form operates in onchange mode, with its limitations.
|
|
"""
|
|
|
|
from odoo.tests.common import TransactionCase
|
|
|
|
|
|
class OnChangeCase(TransactionCase):
|
|
is_company = False
|
|
|
|
def setUp(self):
|
|
super(OnChangeCase, self).setUp()
|
|
self.env['ir.config_parameter'].set_param(
|
|
'partner_names_order', 'last_first_comma')
|
|
|
|
def new_partner(self):
|
|
"""Create an empty partner. Ensure it is (or not) a company."""
|
|
new = self.env["res.partner"].new()
|
|
new.is_company = self.is_company
|
|
return new
|
|
|
|
|
|
class PartnerCompanyCase(OnChangeCase):
|
|
is_company = True
|
|
|
|
def tearDown(self):
|
|
"""Companies never have ``firstname`` nor ``lastname2``."""
|
|
super(PartnerCompanyCase, self).tearDown()
|
|
self.assertEqual(self.partner.firstname, False)
|
|
self.assertEqual(self.partner.lastname2, False)
|
|
|
|
def set_name(self, value):
|
|
self.partner.name = value
|
|
|
|
# It triggers onchange
|
|
self.partner._onchange_name()
|
|
|
|
# Ensure it's properly set
|
|
self.assertEqual(self.partner.name, value)
|
|
|
|
def test_create_from_form(self):
|
|
"""A user creates a company from the form."""
|
|
name = "Sôme company"
|
|
with self.env.do_in_onchange():
|
|
# User presses ``new``
|
|
self.partner = self.new_partner()
|
|
|
|
# User changes fields
|
|
self.set_name(name)
|
|
|
|
self.assertEqual(self.partner.lastname, name)
|
|
|
|
def test_empty_name_and_subnames(self):
|
|
"""If the user empties ``name``, subnames must be ``False``.
|
|
|
|
Otherwise, the ``required`` attr will not work as expected.
|
|
"""
|
|
with self.env.do_in_onchange():
|
|
# User presses ``new``
|
|
self.partner = self.new_partner()
|
|
|
|
# User changes fields
|
|
self.set_name("Fóo")
|
|
self.set_name("")
|
|
|
|
self.assertEqual(self.partner.lastname, False)
|
|
|
|
|
|
class PartnerContactCase(OnChangeCase):
|
|
def set_field(self, field, value):
|
|
# Changes the field
|
|
setattr(self.partner, field, value)
|
|
|
|
if field in ("firstname", "lastname", "lastname2"):
|
|
# Trigger onchanges
|
|
self.partner._onchange_subnames()
|
|
self.partner._onchange_name()
|
|
|
|
# Check it's set OK
|
|
self.assertEqual(getattr(self.partner, field), value)
|
|
|
|
def test_create_from_form_empty(self):
|
|
"""A user creates a contact from the form.
|
|
|
|
All subfields must be false, or the ``required`` attr will not work as
|
|
expected.
|
|
"""
|
|
with self.env.do_in_onchange():
|
|
# User presses ``new``
|
|
self.partner = self.new_partner()
|
|
|
|
# Odoo tries to compute the name
|
|
self.partner._compute_name()
|
|
|
|
# This is then triggered
|
|
self.partner._onchange_name()
|
|
|
|
# Subnames must start as False to make the UI work fine
|
|
self.assertEqual(self.partner.firstname, False)
|
|
self.assertEqual(self.partner.lastname, False)
|
|
self.assertEqual(self.partner.lastname2, False)
|
|
|
|
# ``name`` cannot be False, or upstream Odoo will fail
|
|
self.assertEqual(self.partner.name, "")
|
|
|
|
def test_create_from_form_only_firstname(self):
|
|
"""A user creates a contact with only the firstname from the form."""
|
|
firstname = "Fïrst"
|
|
with self.env.do_in_onchange():
|
|
# User presses ``new``
|
|
self.partner = self.new_partner()
|
|
|
|
# User changes fields
|
|
self.set_field("firstname", firstname)
|
|
|
|
self.assertEqual(self.partner.lastname, False)
|
|
self.assertEqual(self.partner.lastname2, False)
|
|
self.assertEqual(self.partner.name, firstname)
|
|
|
|
def test_create_from_form_only_lastname(self):
|
|
"""A user creates a contact with only the lastname from the form."""
|
|
lastname = "Läst"
|
|
with self.env.do_in_onchange():
|
|
# User presses ``new``
|
|
self.partner = self.new_partner()
|
|
|
|
# User changes fields
|
|
self.set_field("lastname", lastname)
|
|
|
|
self.assertEqual(self.partner.firstname, False)
|
|
self.assertEqual(self.partner.lastname2, False)
|
|
self.assertEqual(self.partner.name, lastname)
|
|
|
|
def test_create_from_form_only_lastname2(self):
|
|
"""A user creates a contact with only the lastname2 from the form."""
|
|
lastname2 = "Läst2"
|
|
with self.env.do_in_onchange():
|
|
# User presses ``new``
|
|
self.partner = self.new_partner()
|
|
|
|
# User changes fields
|
|
self.set_field("lastname2", lastname2)
|
|
|
|
self.assertEqual(self.partner.firstname, False)
|
|
self.assertEqual(self.partner.lastname, False)
|
|
self.assertEqual(self.partner.name, lastname2)
|
|
|
|
def test_create_from_without_firstname(self):
|
|
"""A user creates a contact without firstname from the form."""
|
|
lastname = "Läst"
|
|
lastname2 = "Läst2"
|
|
with self.env.do_in_onchange():
|
|
# User presses ``new``
|
|
self.partner = self.new_partner()
|
|
|
|
# User changes fields
|
|
self.set_field("lastname", lastname)
|
|
self.set_field("lastname2", lastname2)
|
|
|
|
self.assertEqual(self.partner.firstname, False)
|
|
self.assertEqual(
|
|
self.partner.name,
|
|
"%s %s" % (lastname, lastname2))
|
|
|
|
def test_create_from_without_lastname(self):
|
|
"""A user creates a contact without lastname from the form."""
|
|
firstname = "Fïrst"
|
|
lastname2 = "Läst2"
|
|
with self.env.do_in_onchange():
|
|
# User presses ``new``
|
|
self.partner = self.new_partner()
|
|
|
|
# User changes fields
|
|
self.set_field("firstname", firstname)
|
|
self.set_field("lastname2", lastname2)
|
|
|
|
self.assertEqual(self.partner.lastname, False)
|
|
self.assertEqual(
|
|
self.partner.name,
|
|
"%s, %s" % (lastname2, firstname))
|
|
|
|
def test_create_from_without_lastname2(self):
|
|
"""A user creates a contact without lastname2 from the form."""
|
|
firstname = "Fïrst"
|
|
lastname = "Läst"
|
|
with self.env.do_in_onchange():
|
|
# User presses ``new``
|
|
self.partner = self.new_partner()
|
|
|
|
# User changes fields
|
|
self.set_field("firstname", firstname)
|
|
self.set_field("lastname", lastname)
|
|
|
|
self.assertEqual(self.partner.lastname2, False)
|
|
self.assertEqual(
|
|
self.partner.name,
|
|
"%s, %s" % (lastname, firstname))
|
|
|
|
def test_create_from_form_all(self):
|
|
"""A user creates a contact with all names from the form."""
|
|
firstname = "Fïrst"
|
|
lastname = "Läst"
|
|
lastname2 = "Läst2"
|
|
with self.env.do_in_onchange():
|
|
# User presses ``new``
|
|
self.partner = self.new_partner()
|
|
|
|
# User changes fields
|
|
self.set_field("firstname", firstname)
|
|
self.set_field("lastname", lastname)
|
|
self.set_field("lastname2", lastname2)
|
|
|
|
self.assertEqual(
|
|
self.partner.name,
|
|
"%s %s, %s" % (lastname, lastname2, firstname))
|