summaryrefslogtreecommitdiff
path: root/odoo/addons/test_new_api/tests/test_onchange.py
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2018-11-29 18:38:55 +0100
committerChristophe Simonis <chs@odoo.com>2018-11-29 18:38:55 +0100
commitf5c3dafb045f4eb5e832c45596dd59396667ea09 (patch)
tree8265091d53c54dfa47e5a67f00e98cfda404ade2 /odoo/addons/test_new_api/tests/test_onchange.py
parent5644ab53ab6f370a2fb48242e22702655afd6655 (diff)
parentc0eef4271110ebcab07811328a7b3f4309fb4d06 (diff)
[MERGE] forward port branch saas-11.3 up to c0eef427111
Diffstat (limited to 'odoo/addons/test_new_api/tests/test_onchange.py')
-rw-r--r--odoo/addons/test_new_api/tests/test_onchange.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/odoo/addons/test_new_api/tests/test_onchange.py b/odoo/addons/test_new_api/tests/test_onchange.py
index 7f91209b8b0..0c58844bb09 100644
--- a/odoo/addons/test_new_api/tests/test_onchange.py
+++ b/odoo/addons/test_new_api/tests/test_onchange.py
@@ -1,4 +1,8 @@
# -*- coding: utf-8 -*-
+try:
+ from unittest.mock import patch
+except ImportError:
+ from mock import patch
from odoo.tests import common
@@ -466,3 +470,32 @@ class TestOnChange(common.TransactionCase):
result = Message.onchange(value, ['message', 'message_name', 'message_currency'], field_onchange)
self.assertEqual(result['value'], onchange_result)
+
+ def test_onchange_many2one_one2many(self):
+ """ Setting a many2one field should not read the inverse one2many. """
+ discussion = self.env.ref('test_new_api.discussion_0')
+ field_onchange = self.Message._onchange_spec()
+ self.assertEqual(field_onchange.get('discussion'), '1')
+
+ values = {
+ 'discussion': discussion.id,
+ 'name': "[%s] %s" % ('', self.env.user.name),
+ 'body': False,
+ 'author': self.env.uid,
+ 'size': 0,
+ }
+
+ called = [False]
+ orig_read = type(discussion).read
+
+ def mock_read(self, fields=None, load='_classic_read'):
+ if discussion in self and 'messages' in (fields or ()):
+ called[0] = True
+ return orig_read(self, fields, load)
+
+ # changing 'discussion' on message should not read 'messages' on discussion
+ with patch.object(type(discussion), 'read', mock_read, create=True):
+ self.env.cache.invalidate()
+ self.Message.onchange(values, 'discussion', field_onchange)
+
+ self.assertFalse(called[0], "discussion.messages has been read")