diff options
| author | Raphael Collet <rco@odoo.com> | 2018-06-07 10:33:56 +0200 |
|---|---|---|
| committer | Raphael Collet <rco@odoo.com> | 2018-07-24 17:12:04 +0200 |
| commit | 2054b5928574affbb7efcd8a9ab146ee4fa34938 (patch) | |
| tree | 6488af6158bae727e6f8aa6da50fbe39bd8ca863 /odoo/addons/test_new_api/tests | |
| parent | c51488c2f447b16c21b35e51935cc4f04dc16276 (diff) | |
[FIX] models: make `onchange` return a smaller diff
Large diffs (specifically in x2many fields) cause performance issues. They
overload the web client, which considers all returned fields as dirty.
Diffstat (limited to 'odoo/addons/test_new_api/tests')
| -rw-r--r-- | odoo/addons/test_new_api/tests/test_onchange.py | 37 |
1 files changed, 9 insertions, 28 deletions
diff --git a/odoo/addons/test_new_api/tests/test_onchange.py b/odoo/addons/test_new_api/tests/test_onchange.py index 7caf433a467..52fc0d06170 100644 --- a/odoo/addons/test_new_api/tests/test_onchange.py +++ b/odoo/addons/test_new_api/tests/test_onchange.py @@ -139,14 +139,10 @@ class TestOnChange(common.TransactionCase): self.env.cache.invalidate() result = self.Discussion.onchange(values, 'name', field_onchange) self.assertIn('messages', result['value']) - self.assertItemsEqual(result['value']['messages'], [ + self.assertEqual(result['value']['messages'], [ (5,), (1, message.id, { 'name': "[%s] %s" % ("Foo", USER.name), - 'body': message.body, - 'author': message.author.name_get()[0], - 'size': message.size, - 'important': message.important, }), (0, 0, { 'name': "[%s] %s" % ("Foo", USER.name), @@ -245,8 +241,7 @@ class TestOnChange(common.TransactionCase): 'lines': [ (5,), (1, line1.id, {'name': partner2.name, - 'partner': (partner2.id, partner2.name), - 'tags': [(5,)]}), + 'partner': (partner2.id, partner2.name)}), (0, 0, {'name': partner2.name, 'partner': (partner2.id, partner2.name), 'tags': [(5,)]}), @@ -270,8 +265,7 @@ class TestOnChange(common.TransactionCase): 'lines': [ (5,), (1, line1.id, {'name': partner2.name, - 'partner': (partner2.id, partner2.name), - 'tags': [(5,)]}), + 'partner': (partner2.id, partner2.name)}), (0, 0, {'name': partner2.name, 'partner': (partner2.id, partner2.name), 'tags': [(5,), (0, 0, {'name': 'Tag'})]}), @@ -308,8 +302,7 @@ class TestOnChange(common.TransactionCase): self.assertIn('participants', result['value']) self.assertItemsEqual( result['value']['participants'], - [(5,)] + [(1, user.id, {'display_name': user.display_name}) - for user in discussion.participants + demo], + [(5,)] + [(4, user.id) for user in discussion.participants + demo], ) def test_onchange_default(self): @@ -345,6 +338,8 @@ class TestOnChange(common.TransactionCase): self.assertEqual(len(discussion.messages), 3) messages = [(4, msg.id) for msg in discussion.messages] messages[0] = (1, messages[0][1], {'body': 'test onchange'}) + lines = ["%s:%s" % (m.name, m.body) for m in discussion.messages] + lines[0] = "%s:%s" % (discussion.messages[0].name, 'test onchange') values = { 'name': discussion.name, 'moderator': demo.id, @@ -355,8 +350,7 @@ class TestOnChange(common.TransactionCase): } result = discussion.onchange(values, 'messages', field_onchange) self.assertIn('message_concat', result['value']) - self.assertEqual(result['value']['message_concat'], - "\n".join(["%s:%s" % (m.name, m.body) for m in discussion.messages])) + self.assertEqual(result['value']['message_concat'], "\n".join(lines)) def test_onchange_one2many_with_domain_on_related_field(self): """ test the value of the one2many field when defined with a domain on a related field""" @@ -402,28 +396,15 @@ class TestOnChange(common.TransactionCase): 'categories': [(4, cat.id) for cat in discussion.categories], 'messages': [(4, msg.id) for msg in discussion.messages], 'participants': [(4, usr.id) for usr in discussion.participants], - 'message_changes': 0, 'important_messages': [(4, msg.id) for msg in discussion.important_messages], 'important_emails': [(4, eml.id) for eml in discussion.important_emails], } + self.env.cache.invalidate() result = discussion.onchange(values, 'name', field_onchange) - # When one2many domain contains non-computed field, things are ok - self.assertEqual(result['value']['important_messages'], - [(5,)] + [(4, msg.id) for msg in discussion.important_messages]) - - # But here with commit 5676d81, we get value of: [(2, email.id)] self.assertEqual( result['value']['important_emails'], - [(5,), - (1, email.id, { - 'name': u'[Foo Bar] %s' % USER.name, - 'body': email.body, - 'author': USER.name_get()[0], - 'important': True, - 'email_to': demo.email, - 'size': email.size, - })] + [(5,), (1, email.id, {'name': u'[Foo Bar] %s' % USER.name})], ) def test_onchange_related(self): |
