summaryrefslogtreecommitdiff
path: root/odoo/addons/test_new_api
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2018-03-09 16:25:58 +0100
committerChristophe Simonis <chs@odoo.com>2018-03-09 16:25:58 +0100
commit0f57bdba72b592ca097d4cd3da99a75883d8c623 (patch)
tree94eef0c9aaf885c7f717bab5e468ca72b59a219d /odoo/addons/test_new_api
parent35f0797002e44ce5673e9fab63710d2764329694 (diff)
parent42659dc70c2b9b124e7e4fdc0449f660c3de5c76 (diff)
[MERGE] forward port branch saas-11.2 up to 42659dc70c2
Diffstat (limited to 'odoo/addons/test_new_api')
-rw-r--r--odoo/addons/test_new_api/models.py4
-rw-r--r--odoo/addons/test_new_api/tests/test_new_fields.py36
-rw-r--r--odoo/addons/test_new_api/tests/test_onchange.py29
3 files changed, 51 insertions, 18 deletions
diff --git a/odoo/addons/test_new_api/models.py b/odoo/addons/test_new_api/models.py
index 026159bbf00..eb1c6532814 100644
--- a/odoo/addons/test_new_api/models.py
+++ b/odoo/addons/test_new_api/models.py
@@ -324,6 +324,9 @@ class Related(models.Model):
related_name = fields.Char(related='name', string='A related on Name')
related_related_name = fields.Char(related='related_name', string='A related on a related on Name')
+ message = fields.Many2one('test_new_api.message')
+ message_name = fields.Text(related="message.body", related_sudo=False, string='Message Body')
+ message_currency = fields.Many2one(related="message.author", string='Message Author')
class ComputeProtected(models.Model):
_name = 'test_new_api.compute.protected'
@@ -336,7 +339,6 @@ class ComputeProtected(models.Model):
for record in self:
record.bar = record.foo
-
class ComputeInverse(models.Model):
_name = 'test_new_api.compute.inverse'
diff --git a/odoo/addons/test_new_api/tests/test_new_fields.py b/odoo/addons/test_new_api/tests/test_new_fields.py
index c1bf14fd05c..bd33123af89 100644
--- a/odoo/addons/test_new_api/tests/test_new_fields.py
+++ b/odoo/addons/test_new_api/tests/test_new_fields.py
@@ -733,16 +733,17 @@ class TestFields(common.TransactionCase):
env = self.env(user=self.env.ref('base.user_demo'))
self.assertEqual(env.user.login, "demo")
- # create a new message as demo user
- discussion = self.env.ref('test_new_api.discussion_0')
- message = env['test_new_api.message'].new({'discussion': discussion})
- self.assertEqual(message.discussion, discussion)
-
- # read the related field discussion_name
- self.assertEqual(message.discussion.env, env)
- self.assertEqual(message.discussion_name, discussion.name)
- with self.assertRaises(AccessError):
- message.discussion.name
+ with self.env.do_in_onchange():
+ # create a new message as demo user
+ discussion = self.env.ref('test_new_api.discussion_0')
+ message = env['test_new_api.message'].new({'discussion': discussion})
+ self.assertEqual(message.discussion, discussion)
+
+ # read the related field discussion_name
+ self.assertEqual(message.discussion.env, env)
+ self.assertEqual(message.discussion_name, discussion.name)
+ with self.assertRaises(AccessError):
+ message.discussion.name
@mute_logger('odoo.addons.base.models.ir_model')
def test_42_new_related(self):
@@ -755,14 +756,15 @@ class TestFields(common.TransactionCase):
env = self.env(user=self.env.ref('base.user_demo'))
self.assertEqual(env.user.login, "demo")
- # create a new discussion and a new message as demo user
- discussion = env['test_new_api.discussion'].new({'name': 'Stuff'})
- message = env['test_new_api.message'].new({'discussion': discussion})
- self.assertEqual(message.discussion, discussion)
+ with self.env.do_in_onchange():
+ # create a new discussion and a new message as demo user
+ discussion = env['test_new_api.discussion'].new({'name': 'Stuff'})
+ message = env['test_new_api.message'].new({'discussion': discussion})
+ self.assertEqual(message.discussion, discussion)
- # read the related field discussion_name
- self.assertNotEqual(message.sudo().env, message.env)
- self.assertEqual(message.discussion_name, discussion.name)
+ # read the related field discussion_name
+ self.assertNotEqual(message.sudo().env, message.env)
+ self.assertEqual(message.discussion_name, discussion.name)
def test_50_defaults(self):
""" test default values. """
diff --git a/odoo/addons/test_new_api/tests/test_onchange.py b/odoo/addons/test_new_api/tests/test_onchange.py
index a87006c76cb..7caf433a467 100644
--- a/odoo/addons/test_new_api/tests/test_onchange.py
+++ b/odoo/addons/test_new_api/tests/test_onchange.py
@@ -425,3 +425,32 @@ class TestOnChange(common.TransactionCase):
'size': email.size,
})]
)
+
+ def test_onchange_related(self):
+ value = {
+ 'message': 1,
+ 'message_name': False,
+ 'message_currency': 2,
+ }
+ field_onchange = {
+ 'message': '1',
+ 'message_name': None,
+ 'message_currency': None,
+ }
+
+ onchange_result = {
+ 'message_name': 'Hey dude!',
+ 'message_currency': (1, 'Administrator')
+ }
+
+ self.env.cache.invalidate()
+ Message = self.env['test_new_api.related']
+ result = Message.onchange(value, ['message', 'message_name', 'message_currency'], field_onchange)
+
+ self.assertEqual(result['value'], onchange_result)
+
+ self.env.cache.invalidate()
+ Message = self.env(user=self.env.ref('base.user_demo').id)['test_new_api.related']
+ result = Message.onchange(value, ['message', 'message_name', 'message_currency'], field_onchange)
+
+ self.assertEqual(result['value'], onchange_result)