|
|
# -*- 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))
|