summaryrefslogtreecommitdiff
path: root/odoo/addons/test_new_api
diff options
context:
space:
mode:
Diffstat (limited to 'odoo/addons/test_new_api')
-rw-r--r--odoo/addons/test_new_api/__init__.py2
-rw-r--r--odoo/addons/test_new_api/__manifest__.py10
-rw-r--r--odoo/addons/test_new_api/data/test_new_api_data.xml (renamed from odoo/addons/test_new_api/demo_data.xml)3
-rw-r--r--odoo/addons/test_new_api/models/__init__.py4
-rw-r--r--odoo/addons/test_new_api/models/test_new_api.py (renamed from odoo/addons/test_new_api/models.py)0
-rw-r--r--odoo/addons/test_new_api/security/ir.model.access.csv (renamed from odoo/addons/test_new_api/ir.model.access.csv)0
-rw-r--r--odoo/addons/test_new_api/tests/test_new_fields.py53
-rw-r--r--odoo/addons/test_new_api/tests/test_onchange.py17
-rw-r--r--odoo/addons/test_new_api/tests/test_ui.py6
-rw-r--r--odoo/addons/test_new_api/views/test_new_api_templates.xml (renamed from odoo/addons/test_new_api/assets.xml)0
-rw-r--r--odoo/addons/test_new_api/views/test_new_api_views.xml (renamed from odoo/addons/test_new_api/views.xml)0
11 files changed, 70 insertions, 25 deletions
diff --git a/odoo/addons/test_new_api/__init__.py b/odoo/addons/test_new_api/__init__.py
index a0fdc10fe11..dc5e6b693d1 100644
--- a/odoo/addons/test_new_api/__init__.py
+++ b/odoo/addons/test_new_api/__init__.py
@@ -1,2 +1,4 @@
# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
from . import models
diff --git a/odoo/addons/test_new_api/__manifest__.py b/odoo/addons/test_new_api/__manifest__.py
index 409fb15571a..f7ba4e9cdd8 100644
--- a/odoo/addons/test_new_api/__manifest__.py
+++ b/odoo/addons/test_new_api/__manifest__.py
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
{
'name': 'Test API',
'version': '1.0',
@@ -8,11 +10,11 @@
'installable': True,
'auto_install': False,
'data': [
- 'ir.model.access.csv',
- 'views.xml',
- 'assets.xml',
+ 'security/ir.model.access.csv',
+ 'views/test_new_api_views.xml',
+ 'views/test_new_api_templates.xml',
+ 'data/test_new_api_data.xml',
],
'demo': [
- 'demo_data.xml',
],
}
diff --git a/odoo/addons/test_new_api/demo_data.xml b/odoo/addons/test_new_api/data/test_new_api_data.xml
index ec6a5c8bced..678dabbece7 100644
--- a/odoo/addons/test_new_api/demo_data.xml
+++ b/odoo/addons/test_new_api/data/test_new_api_data.xml
@@ -10,7 +10,7 @@
<record id="discussion_0" model="test_new_api.discussion">
<field name="name">Stuff</field>
- <field name="participants" eval="[(4, ref('base.user_root')), (4, ref('base.user_demo'))]"/>
+ <field name="participants" eval="[(4, ref('base.user_root'))]"/>
</record>
<record id="message_0_0" model="test_new_api.message">
@@ -20,7 +20,6 @@
</record>
<record id="message_0_1" model="test_new_api.message">
<field name="discussion" ref="discussion_0"/>
- <field name="author" ref="base.user_demo"/>
<field name="body">What's up?</field>
</record>
<record id="message_0_2" model="test_new_api.message">
diff --git a/odoo/addons/test_new_api/models/__init__.py b/odoo/addons/test_new_api/models/__init__.py
new file mode 100644
index 00000000000..8c9bb6618d1
--- /dev/null
+++ b/odoo/addons/test_new_api/models/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import test_new_api
diff --git a/odoo/addons/test_new_api/models.py b/odoo/addons/test_new_api/models/test_new_api.py
index 3f45466efa3..3f45466efa3 100644
--- a/odoo/addons/test_new_api/models.py
+++ b/odoo/addons/test_new_api/models/test_new_api.py
diff --git a/odoo/addons/test_new_api/ir.model.access.csv b/odoo/addons/test_new_api/security/ir.model.access.csv
index b676e85dd0d..b676e85dd0d 100644
--- a/odoo/addons/test_new_api/ir.model.access.csv
+++ b/odoo/addons/test_new_api/security/ir.model.access.csv
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 7622ec7e5a1..bb7c4ccbc1b 100644
--- a/odoo/addons/test_new_api/tests/test_new_fields.py
+++ b/odoo/addons/test_new_api/tests/test_new_fields.py
@@ -1,3 +1,6 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
#
# test cases for new-style fields
#
@@ -9,6 +12,7 @@ from PIL import Image
import psycopg2
from odoo import fields
+from odoo.addons.base.tests.common import TransactionCaseWithUserDemo
from odoo.exceptions import AccessError, UserError, ValidationError
from odoo.tests import common
from odoo.tools import mute_logger, float_repr
@@ -16,7 +20,16 @@ from odoo.tools.date_utils import add, subtract, start_of, end_of
from odoo.tools.image import image_data_uri
-class TestFields(common.TransactionCase):
+class TestFields(TransactionCaseWithUserDemo):
+
+ def setUp(self):
+ super(TestFields, self).setUp()
+ self.env.ref('test_new_api.discussion_0').write({'participants': [(4, self.user_demo.id)]})
+ # YTI FIX ME: The cache shouldn't be inconsistent (rco is gonna fix it)
+ # self.env.ref('test_new_api.discussion_0').participants -> 1 user
+ # self.env.ref('test_new_api.discussion_0').invalidate_cache()
+ # self.env.ref('test_new_api.discussion_0').with_context(active_test=False).participants -> 2 users
+ self.env.ref('test_new_api.message_0_1').write({'author': self.user_demo.id})
def test_00_basics(self):
""" test accessing new fields """
@@ -110,6 +123,9 @@ class TestFields(common.TransactionCase):
def test_10_computed_custom(self):
""" check definition of custom computed fields """
+ # Flush demo user before creating a new ir.model.fields to avoid
+ # a deadlock
+ self.user_demo.flush()
self.env['ir.model.fields'].create({
'name': 'x_bool_false_computed',
'model_id': self.env.ref('test_new_api.model_test_new_api_message').id,
@@ -148,7 +164,7 @@ class TestFields(common.TransactionCase):
# create a message, assign body, and check size in several environments
message1 = self.env['test_new_api.message'].create({})
- message2 = message1.with_user(self.env.ref('base.user_demo'))
+ message2 = message1.with_user(self.user_demo)
self.assertEqual(message1.size, 0)
self.assertEqual(message2.size, 0)
@@ -177,6 +193,10 @@ class TestFields(common.TransactionCase):
check_stored(discussion1)
# switch message from discussion, and check again
+
+ # See YTI FIXME
+ discussion1.invalidate_cache()
+
discussion2 = discussion1.copy({'name': 'Another discussion'})
message2 = discussion1.messages[0]
message2.discussion = discussion2
@@ -184,7 +204,7 @@ class TestFields(common.TransactionCase):
# create a new discussion with messages, and check their name
user_root = self.env.ref('base.user_root')
- user_demo = self.env.ref('base.user_demo')
+ user_demo = self.user_demo
discussion3 = self.env['test_new_api.discussion'].create({
'name': 'Stuff',
'participants': [(4, user_root.id), (4, user_demo.id)],
@@ -265,7 +285,7 @@ class TestFields(common.TransactionCase):
# We need to force the read in order to test the security access
User.invalidate_cache()
# group users as a recordset, and read them as user demo
- users = (user1 + user2 + user3).with_user(self.env.ref('base.user_demo'))
+ users = (user1 + user2 + user3).with_user(self.user_demo)
user1, user2, user3 = users
# regression test: a bug invalidated the field's value from cache
user1.company_type
@@ -480,6 +500,7 @@ class TestFields(common.TransactionCase):
def test_15_constraint(self):
""" test new-style Python constraints """
discussion = self.env.ref('test_new_api.discussion_0')
+ discussion.flush()
# remove oneself from discussion participants: we can no longer create
# messages in discussion
@@ -773,7 +794,7 @@ class TestFields(common.TransactionCase):
def test_23_relation(self):
""" test relation fields """
- demo = self.env.ref('base.user_demo')
+ demo = self.user_demo
message = self.env.ref('test_new_api.message_0_0')
# check environment of record and related records
@@ -792,6 +813,9 @@ class TestFields(common.TransactionCase):
self.assertEqual(demo_message.env, demo_env)
self.assertEqual(demo_message.discussion.env, demo_env)
+ # See YTI FIXME
+ message.discussion.invalidate_cache()
+
# assign record's parent to a record in demo_env
message.discussion = message.discussion.copy({'name': 'Copy'})
@@ -1249,7 +1273,7 @@ class TestFields(common.TransactionCase):
access.write({'perm_read': False})
# create an environment for demo user
- env = self.env(user=self.env.ref('base.user_demo'))
+ env = self.env(user=self.user_demo)
self.assertEqual(env.user.login, "demo")
# create a new message as demo user
@@ -1274,7 +1298,7 @@ class TestFields(common.TransactionCase):
access.write({'perm_read': False})
# create an environment for demo user
- env = self.env(user=self.env.ref('base.user_demo'))
+ env = self.env(user=self.user_demo)
self.assertEqual(env.user.login, "demo")
# create a new discussion and a new message as demo user
@@ -1328,6 +1352,9 @@ class TestFields(common.TransactionCase):
def test_70_x2many_write(self):
discussion = self.env.ref('test_new_api.discussion_0')
+ # See YTI FIXME
+ discussion.invalidate_cache()
+
Message = self.env['test_new_api.message']
# There must be 3 messages, 0 important
self.assertEqual(len(discussion.messages), 3)
@@ -1353,11 +1380,15 @@ class TestFields(common.TransactionCase):
def test_70_relational_inverse(self):
""" Check the consistency of relational fields with inverse(s). """
discussion = self.env.ref('test_new_api.discussion_0')
- demo_discussion = discussion.with_user(self.env.ref('base.user_demo'))
+ demo_discussion = discussion.with_user(self.user_demo)
# check that the demo user sees the same messages
self.assertEqual(demo_discussion.messages, discussion.messages)
+ # See YTI FIXME
+ discussion.invalidate_cache()
+ demo_discussion.invalidate_cache()
+
# add a message as user demo
messages = demo_discussion.messages
message = messages.create({'discussion': discussion.id})
@@ -1413,7 +1444,7 @@ class TestFields(common.TransactionCase):
# And this gives error
with self.assertRaises(UserError):
self.env['test_new_api.binary_svg'].with_user(
- self.env.ref('base.user_demo'),
+ self.user_demo,
).create({
'name': 'Test without attachment',
'image_wo_attachment': SVG,
@@ -1434,7 +1465,7 @@ class TestFields(common.TransactionCase):
self.assertEqual(attachment.mimetype, 'image/svg+xml')
# ...but this should be neutered with demo user
record = self.env['test_new_api.binary_svg'].with_user(
- self.env.ref('base.user_demo'),
+ self.user_demo,
).create({
'name': 'Test without attachment',
'image_attachment': SVG,
@@ -1448,7 +1479,7 @@ class TestFields(common.TransactionCase):
def test_92_binary_self_avatar_svg(self):
from odoo.addons.base.tests.test_mimetypes import SVG
- demo_user = self.env.ref('base.user_demo')
+ demo_user = self.user_demo
# User demo changes his own avatar
demo_user.with_user(demo_user).image_1920 = SVG
# The SVG file should have been neutered
diff --git a/odoo/addons/test_new_api/tests/test_onchange.py b/odoo/addons/test_new_api/tests/test_onchange.py
index 2359acd78fe..5d544bd2875 100644
--- a/odoo/addons/test_new_api/tests/test_onchange.py
+++ b/odoo/addons/test_new_api/tests/test_onchange.py
@@ -1,16 +1,19 @@
# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
try:
from unittest.mock import patch
except ImportError:
from mock import patch
+from odoo.addons.base.tests.common import SavepointCaseWithUserDemo
from odoo.tests import common
def strip_prefix(prefix, names):
size = len(prefix)
return [name[size:] for name in names if name.startswith(prefix)]
-class TestOnChange(common.TransactionCase):
+class TestOnChange(SavepointCaseWithUserDemo):
def setUp(self):
super(TestOnChange, self).setUp()
@@ -229,7 +232,7 @@ class TestOnChange(common.TransactionCase):
def test_onchange_one2many_multi(self):
""" test the effect of multiple onchange methods on one2many fields """
- partner1 = self.env.ref('base.res_partner_1')
+ partner1 = self.env['res.partner'].create({'name': 'A partner'})
multi = self.env['test_new_api.multi'].create({'partner': partner1.id})
line1 = multi.lines.create({'multi': multi.id})
@@ -255,7 +258,7 @@ class TestOnChange(common.TransactionCase):
# -> set 'partner' on all lines
# -> recompute 'name'
# -> set 'name' on all lines
- partner2 = self.env.ref('base.res_partner_2')
+ partner2 = self.env['res.partner'].create({'name': 'A second partner'})
values = {
'name': partner1.name,
'partner': partner2.id, # this one just changed
@@ -326,7 +329,7 @@ class TestOnChange(common.TransactionCase):
def test_onchange_specific(self):
""" test the effect of field-specific onchange method """
discussion = self.env.ref('test_new_api.discussion_0')
- demo = self.env.ref('base.user_demo')
+ demo = self.user_demo
field_onchange = self.Discussion._onchange_spec()
self.assertEqual(field_onchange.get('moderator'), '1')
@@ -381,7 +384,7 @@ class TestOnChange(common.TransactionCase):
def test_onchange_one2many_value(self):
""" test the value of the one2many field inside the onchange """
discussion = self.env.ref('test_new_api.discussion_0')
- demo = self.env.ref('base.user_demo')
+ demo = self.user_demo
field_onchange = self.Discussion._onchange_spec()
self.assertEqual(field_onchange.get('messages'), '1')
@@ -406,7 +409,7 @@ class TestOnChange(common.TransactionCase):
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"""
discussion = self.env.ref('test_new_api.discussion_0')
- demo = self.env.ref('base.user_demo')
+ demo = self.user_demo
# mimic UI behaviour, so we get subfields
# (we need at least subfield: 'important_emails.important')
@@ -489,7 +492,7 @@ class TestOnChange(common.TransactionCase):
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']
+ Message = self.env(user=self.user_demo.id)['test_new_api.related']
result = Message.onchange(value, ['message', 'message_name', 'message_currency'], field_onchange)
self.assertEqual(result['value'], onchange_result)
diff --git a/odoo/addons/test_new_api/tests/test_ui.py b/odoo/addons/test_new_api/tests/test_ui.py
index 6fa360ac9ae..979bf8064a9 100644
--- a/odoo/addons/test_new_api/tests/test_ui.py
+++ b/odoo/addons/test_new_api/tests/test_ui.py
@@ -1,9 +1,13 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
import odoo.tests
from odoo.tools import mute_logger
+from odoo.addons.base.tests.common import HttpCaseWithUserDemo
@odoo.tests.common.tagged('post_install', '-at_install')
-class TestUi(odoo.tests.HttpCase):
+class TestUi(HttpCaseWithUserDemo):
def test_01_admin_widget_x2many(self):
# FIXME: breaks if too many children of base.menu_tests
diff --git a/odoo/addons/test_new_api/assets.xml b/odoo/addons/test_new_api/views/test_new_api_templates.xml
index 8bd75bceab5..8bd75bceab5 100644
--- a/odoo/addons/test_new_api/assets.xml
+++ b/odoo/addons/test_new_api/views/test_new_api_templates.xml
diff --git a/odoo/addons/test_new_api/views.xml b/odoo/addons/test_new_api/views/test_new_api_views.xml
index 830210c4d87..830210c4d87 100644
--- a/odoo/addons/test_new_api/views.xml
+++ b/odoo/addons/test_new_api/views/test_new_api_views.xml