From 2b1a00c6dd2e18e40c1511e805fb1a9e4d42b99b Mon Sep 17 00:00:00 2001 From: Jairo Llopis Date: Fri, 30 Oct 2015 12:11:06 +0100 Subject: [PATCH] Fix #78. Test it too. --- partner_firstname/models.py | 15 ++++++ partner_firstname/tests/__init__.py | 2 +- partner_firstname/tests/test_defaults.py | 65 ++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 partner_firstname/tests/test_defaults.py diff --git a/partner_firstname/models.py b/partner_firstname/models.py index 346c7032e..39836e712 100644 --- a/partner_firstname/models.py +++ b/partner_firstname/models.py @@ -38,6 +38,21 @@ class ResPartner(models.Model): required=False, store=True) + @api.model + def default_get(self, fields_list): + """Invert name when getting default values.""" + result = super(ResPartner, self).default_get(fields_list) + + inverted = self._get_inverse_name( + result.get("name", ""), + result.get("is_company", False)) + + for field in inverted.keys(): + if field in fields_list: + result[field] = inverted.get(field) + + return result + @api.model def _get_computed_name(self, lastname, firstname): """Compute the 'name' field according to splitted data. diff --git a/partner_firstname/tests/__init__.py b/partner_firstname/tests/__init__.py index 7dfc1f9cc..239670f65 100644 --- a/partner_firstname/tests/__init__.py +++ b/partner_firstname/tests/__init__.py @@ -28,4 +28,4 @@ # ############################################################################## -from . import test_empty, test_name, test_onchange +from . import test_defaults, test_empty, test_name, test_onchange diff --git a/partner_firstname/tests/test_defaults.py b/partner_firstname/tests/test_defaults.py new file mode 100644 index 000000000..ab6c3a969 --- /dev/null +++ b/partner_firstname/tests/test_defaults.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +# © 2015 Grupo ESOC Ingeniería de Servicios, S.L. - Jairo Llopis. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +"""Test default values for models.""" + +from openerp.tests.common import TransactionCase +from .base import MailInstalled + + +class PersonCase(TransactionCase): + """Test ``res.partner`` when it is a person.""" + context = {"default_is_company": False} + model = "res.partner" + + def setUp(self): + super(PersonCase, self).setUp() + self.values = { + "firstname": u"Núñez", + "lastname": u"Fernán", + } + self.values["name"] = "%s %s" % (self.values["lastname"], + self.values["firstname"]) + if "default_is_company" in self.context: + self.values["is_company"] = self.context["default_is_company"] + + def tearDown(self): + for key, value in self.values.iteritems(): + self.assertEqual( + self.defaults.get(key), + value, + "Checking key %s" % key) + + return super(PersonCase, self).tearDown() + + def test_default_get(self): + """Getting default values for fields includes new fields.""" + self.defaults = (self.env[self.model] + .with_context(self.context, + default_name=self.values["name"]) + .default_get(self.values.keys())) + + +class CompanyCase(PersonCase): + """Test ``res.partner`` when it is a company.""" + context = {"default_is_company": True} + + def tearDown(self): + self.values.update(lastname=self.values["name"], firstname=False) + return super(CompanyCase, self).tearDown() + + +class UserCase(PersonCase, MailInstalled): + """Test ``res.users``.""" + model = "res.users" + context = {"default_login": "user@example.com"} + + def tearDown(self): + # Cannot create users if ``mail`` is installed + if self.mail_installed(): + # Skip tests + super(PersonCase, self).tearDown() + else: + # Run tests + super(UserCase, self).tearDown()