diff --git a/odoo/addons/base/tests/test_form_create.py b/odoo/addons/base/tests/test_form_create.py index b79980017c4..9a787f46d2f 100644 --- a/odoo/addons/base/tests/test_form_create.py +++ b/odoo/addons/base/tests/test_form_create.py @@ -30,7 +30,6 @@ class TestFormCreate(TransactionCase): }) partner_form.property_account_payable_id = property_account_payable_id partner_form.property_account_receivable_id = property_account_receivable_id - # [('internal_type', '=', 'payable'), ('deprecated', '=', False)] partner_form.save() def test_create_res_users(self): diff --git a/odoo/addons/test_access_rights/tests/test_access_monetary_related.py b/odoo/addons/test_access_rights/tests/test_access_monetary_related.py index 2abe53294ed..0bff8048f8c 100644 --- a/odoo/addons/test_access_rights/tests/test_access_monetary_related.py +++ b/odoo/addons/test_access_rights/tests/test_access_monetary_related.py @@ -1,9 +1,10 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -import odoo.tests + +from odoo.addons.base.tests.common import TransactionCaseWithUserDemo -class TestMonetaryAccess(odoo.tests.TransactionCase): +class TestMonetaryAccess(TransactionCaseWithUserDemo): def test_monetary_access_create(self): """Monetary fields that depend on compute/related currency @@ -13,7 +14,7 @@ class TestMonetaryAccess(odoo.tests.TransactionCase): as well as trigger spurious ACL errors. """ user_admin = self.env.ref("base.user_admin") - user_demo = self.env.ref("base.user_demo").with_user(user_admin) + user_demo = self.user_demo.with_user(user_admin) # this would raise without the fix introduced in this commit new_user = user_demo.copy({'monetary': 1/3}) diff --git a/odoo/addons/test_access_rights/tests/test_feedback.py b/odoo/addons/test_access_rights/tests/test_feedback.py index 09fd42589a8..40515026f3c 100644 --- a/odoo/addons/test_access_rights/tests/test_feedback.py +++ b/odoo/addons/test_access_rights/tests/test_feedback.py @@ -23,7 +23,15 @@ class TestSudo(Feedback): def test_sudo(self): record = self.env['test_access_right.some_obj'].create({'val': 5}) user1 = self.user - user2 = self.env.ref('base.user_demo') + partner_demo = self.env['res.partner'].create({ + 'name': 'Marc Demo', + }) + user2 = self.env['res.users'].create({ + 'login': 'demo2', + 'password': 'demo2', + 'partner_id': partner_demo.id, + 'groups_id': [(6, 0, [self.env.ref('base.group_user').id, self.env.ref('base.group_partner_manager').id])], + }) # with_user(user) record1 = record.with_user(user1) diff --git a/odoo/addons/test_convert/tests/test_env.py b/odoo/addons/test_convert/tests/test_env.py index fc5d9a094d3..1e549ce3db3 100644 --- a/odoo/addons/test_convert/tests/test_env.py +++ b/odoo/addons/test_convert/tests/test_env.py @@ -39,14 +39,14 @@ class TestEnv(common.TransactionCase): model="test_convert.usered", id="test_convert.testing" ), - uid="base.user_demo" + uid="base.default_user" ) ) r = self.env.ref('test_convert.testing') self.assertEqual(r.name, 'a') - self.assertEqual(r.create_uid, self.env.ref('base.user_demo')) - self.assertEqual(r.user_id, self.env.ref('base.user_demo')) + self.assertEqual(r.create_uid, self.env.ref('base.default_user')) + self.assertEqual(r.user_id, self.env.ref('base.default_user')) def test_uid_data_function(self): self.importer( @@ -56,14 +56,14 @@ class TestEnv(common.TransactionCase): name="create", eval="[[{'name': 'b'}]]", ), - uid="base.user_demo" + uid="base.default_user" ) ) r = self.env['test_convert.usered'].search([]) self.assertEqual(r.name, 'b') - self.assertEqual(r.create_uid, self.env.ref('base.user_demo')) - self.assertEqual(r.user_id, self.env.ref('base.user_demo')) + self.assertEqual(r.create_uid, self.env.ref('base.default_user')) + self.assertEqual(r.user_id, self.env.ref('base.default_user')) def test_uid_record(self): self.importer( @@ -72,7 +72,7 @@ class TestEnv(common.TransactionCase): field('c', name="name"), model="test_convert.usered", id="test_convert.testing", - uid="base.user_demo" + uid="base.default_user" ), uid="base.user_root" ) @@ -80,8 +80,8 @@ class TestEnv(common.TransactionCase): r = self.env.ref('test_convert.testing') self.assertEqual(r.name, 'c') - self.assertEqual(r.create_uid, self.env.ref('base.user_demo')) - self.assertEqual(r.user_id, self.env.ref('base.user_demo')) + self.assertEqual(r.create_uid, self.env.ref('base.default_user')) + self.assertEqual(r.user_id, self.env.ref('base.default_user')) def test_uid_function(self): @@ -90,7 +90,7 @@ class TestEnv(common.TransactionCase): function( model="test_convert.usered", name="create", - uid="base.user_demo", + uid="base.default_user", eval="[[{'name': 'd'}]]" ), uid="base.user_root" @@ -98,8 +98,8 @@ class TestEnv(common.TransactionCase): ) r = self.env['test_convert.usered'].search([]) self.assertEqual(r.name, 'd') - self.assertEqual(r.create_uid, self.env.ref('base.user_demo')) - self.assertEqual(r.user_id, self.env.ref('base.user_demo')) + self.assertEqual(r.create_uid, self.env.ref('base.default_user')) + self.assertEqual(r.user_id, self.env.ref('base.default_user')) def test_context_data_function(self): self.env.user.tz = 'UTC' diff --git a/odoo/addons/test_impex/tests/contacts.json b/odoo/addons/test_impex/tests/contacts.json index a024d2b7ee4..8bf490bb4c0 100644 --- a/odoo/addons/test_impex/tests/contacts.json +++ b/odoo/addons/test_impex/tests/contacts.json @@ -1 +1 @@ -[["Wood y Wood Pecker", "", "Snow Street, 25", "Kainuu", "Finland", "Vendor", "1", ""], ["Roger Pecker", "Contact", "Snow Street, 27", "Kainuu", "Finland", "Vendor", "0", "Wood y Wood Pecker"], ["Sharon Pecker", "Delivery Address", "Snow Street, 28", "Kainuu", "Finland", "Vendor", "0", "Wood y Wood Pecker"], ["Thomas Pecker", "Contact", "Snow Street, 27", "Kainuu", "Finland", "Vendor", "0", "Wood y Wood Pecker"], ["Norseman Roundabout", "", "Atonium Street, 45a", "Brussels", "Belgium", "Vendor", "1", ""], ["Yvan Holiday", "Invoice Address", "Atonium Street, 45b", "Brussels", "Belgium", "Vendor", "0", "Norseman Roundabout"], ["Jack Unsworth", "Contact", "Atonium Street, 45a", "Brussels", "Belgium", "Vendor", "0", "Norseman Roundabout"]] +[["Wood y Wood Pecker", "", "Snow Street, 25", "Kainuu", "Finland", "Sellers", "1", ""], ["Roger Pecker", "Contact", "Snow Street, 27", "Kainuu", "Finland", "Sellers", "0", "Wood y Wood Pecker"], ["Sharon Pecker", "Delivery Address", "Snow Street, 28", "Kainuu", "Finland", "Sellers", "0", "Wood y Wood Pecker"], ["Thomas Pecker", "Contact", "Snow Street, 27", "Kainuu", "Finland", "Sellers", "0", "Wood y Wood Pecker"], ["Norseman Roundabout", "", "Atonium Street, 45a", "Brussels", "Belgium", "Sellers", "1", ""], ["Yvan Holiday", "Invoice Address", "Atonium Street, 45b", "Brussels", "Belgium", "Sellers", "0", "Norseman Roundabout"], ["Jack Unsworth", "Contact", "Atonium Street, 45a", "Brussels", "Belgium", "Sellers", "0", "Norseman Roundabout"]] diff --git a/odoo/addons/test_impex/tests/test_load.py b/odoo/addons/test_impex/tests/test_load.py index edd346c6220..d2bd80f7e56 100644 --- a/odoo/addons/test_impex/tests/test_load.py +++ b/odoo/addons/test_impex/tests/test_load.py @@ -6,6 +6,7 @@ import pkgutil import re from odoo import fields +from odoo.addons.base.tests.common import SavepointCaseWithUserDemo from odoo.tests import common from odoo.tools.misc import mute_logger @@ -1007,7 +1008,13 @@ class test_o2m_multiple(ImporterCase): self.assertEqual(set(values(b.child2)), set([21, 22, 23])) -class test_realworld(common.TransactionCase): +class test_realworld(SavepointCaseWithUserDemo): + + @classmethod + def setUpClass(cls): + super(test_realworld, cls).setUpClass() + cls._load_partners_set() + def test_bigfile(self): data = json.loads(pkgutil.get_data(self.__module__, 'contacts_big.json').decode('utf-8')) result = self.env['res.partner'].load(['name', 'mobile', 'email', 'image_1920'], data) diff --git a/odoo/addons/test_inherit/tests/test_inherit.py b/odoo/addons/test_inherit/tests/test_inherit.py index d47f9b0dc93..8e5502d5671 100644 --- a/odoo/addons/test_inherit/tests/test_inherit.py +++ b/odoo/addons/test_inherit/tests/test_inherit.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +from odoo.addons.base.tests.common import TransactionCaseWithUserDemo from odoo.tests import common class test_inherits(common.TransactionCase): @@ -68,10 +69,12 @@ class test_inherits(common.TransactionCase): self.assertEqual(mother._fields['state'].selection, [('a', 'A'), ('d', 'D'), ('b', 'B'), ('c', 'C')]) +class test_inherits_demo(TransactionCaseWithUserDemo): + def test_50_search_one2many(self): """ check search on one2many field based on inherited many2one field. """ # create a daughter record attached to partner Demo - partner_demo = self.env.ref('base.partner_demo') + partner_demo = self.partner_demo daughter = self.env['test.inherit.daughter'].create({'partner_id': partner_demo.id}) self.assertEqual(daughter.partner_id, partner_demo) self.assertIn(daughter, partner_demo.daughter_ids) diff --git a/odoo/addons/test_main_flows/static/tests/tours/main_flow.js b/odoo/addons/test_main_flows/static/tests/tours/main_flow.js index 4b49c9e7e08..272e98c5f54 100644 --- a/odoo/addons/test_main_flows/static/tests/tours/main_flow.js +++ b/odoo/addons/test_main_flows/static/tests/tours/main_flow.js @@ -665,12 +665,6 @@ tour.register('main_flow_tour', { trigger: ".o_statusbar_buttons > button:enabled:contains('Register Payment')", content: _t("Register Payment"), position: "bottom", -}, { - trigger: "select.o_field_widget[name=journal_id]", - extra_trigger: ".modal-dialog", - content: _t("Select Journal"), - position: "bottom", - run: 'text(Bank (USD))', }, { trigger: ".modal-footer .btn-primary", content: _t("Validate"), @@ -732,7 +726,7 @@ tour.register('main_flow_tour', { trigger: ".o_selected_row .o_field_widget[name=amount] input", content: _t("Write the amount received."), position: "bottom", - run: "text 12.65", + run: "text 11.00", }, { edition: "enterprise", trigger: ".o_selected_row .o_field_widget[name=partner_id] input", @@ -762,7 +756,7 @@ tour.register('main_flow_tour', { position: "bottom", }, { edition: "enterprise", - trigger: "button.o_reconcile", + trigger: "button.o_reconcile, button.o_validate", content: _t('

Click on Reconcile

'), position: "right", }, { diff --git a/odoo/addons/test_main_flows/tests/test_flow.py b/odoo/addons/test_main_flows/tests/test_flow.py index c412b031339..fe86f8187c6 100644 --- a/odoo/addons/test_main_flows/tests/test_flow.py +++ b/odoo/addons/test_main_flows/tests/test_flow.py @@ -7,4 +7,83 @@ import odoo.tests class TestUi(odoo.tests.HttpCase): def test_01_main_flow_tour(self): + # Define minimal accounting data to run without CoA + a_expense = self.env['account.account'].create({ + 'code': 'X2120', + 'name': 'Expenses - (test)', + 'user_type_id': self.env.ref('account.data_account_type_expenses').id, + }) + a_recv = self.env['account.account'].create({ + 'code': 'X1012', + 'name': 'Debtors - (test)', + 'reconcile': True, + 'user_type_id': self.env.ref('account.data_account_type_receivable').id, + }) + a_pay = self.env['account.account'].create({ + 'code': 'X1111', + 'name': 'Creditors - (test)', + 'user_type_id': self.env.ref('account.data_account_type_payable').id, + 'reconcile': True, + }) + a_sale = self.env['account.account'].create({ + 'code': 'X2020', + 'name': 'Product Sales - (test)', + 'user_type_id': self.env.ref('account.data_account_type_revenue').id, + }) + bnk = self.env['account.account'].create({ + 'code': 'X1014', + 'name': 'Bank Current Account - (test)', + 'user_type_id': self.env.ref('account.data_account_type_liquidity').id, + }) + + self.env['ir.property'].create([{ + 'name': 'property_account_receivable_id', + 'fields_id': self.env['ir.model.fields'].search([('model', '=', 'res.partner'), ('name', '=', 'property_account_receivable_id')], limit=1).id, + 'value': 'account.account,%s' % (a_recv.id), + 'company_id': self.env.company.id, + }, { + 'name': 'property_account_payable_id', + 'fields_id': self.env['ir.model.fields'].search([('model', '=', 'res.partner'), ('name', '=', 'property_account_payable_id')], limit=1).id, + 'value': 'account.account,%s' % (a_pay.id), + 'company_id': self.env.company.id, + }, { + 'name': 'property_account_position_id', + 'fields_id': self.env['ir.model.fields'].search([('model', '=', 'res.partner'), ('name', '=', 'property_account_position_id')], limit=1).id, + 'value': False, + 'company_id': self.env.company.id, + }, { + 'name': 'property_account_expense_categ_id', + 'fields_id': self.env['ir.model.fields'].search([('model', '=', 'product.category'), ('name', '=', 'property_account_expense_categ_id')], limit=1).id, + 'value': 'account.account,%s' % (a_expense.id), + 'company_id': self.env.company.id, + }, { + 'name': 'property_account_income_categ_id', + 'fields_id': self.env['ir.model.fields'].search([('model', '=', 'product.category'), ('name', '=', 'property_account_income_categ_id')], limit=1).id, + 'value': 'account.account,%s' % (a_sale.id), + 'company_id': self.env.company.id, + }]) + self.expenses_journal = self.env['account.journal'].create({ + 'name': 'Vendor Bills - Test', + 'code': 'TEXJ', + 'type': 'purchase', + 'default_credit_account_id': a_expense.id, + 'default_debit_account_id': a_expense.id, + 'refund_sequence': True, + }) + self.bank_journal = self.env['account.journal'].create({ + 'name': 'Bank - Test', + 'code': 'TBNK', + 'type': 'bank', + 'default_credit_account_id': bnk.id, + 'default_debit_account_id': bnk.id, + }) + self.sales_journal = self.env['account.journal'].create({ + 'name': 'Customer Invoices - Test', + 'code': 'TINV', + 'type': 'sale', + 'default_credit_account_id': a_sale.id, + 'default_debit_account_id': a_sale.id, + 'refund_sequence': True, + }) + self.start_tour("/web", 'main_flow_tour', login="admin", timeout=180) 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 similarity index 95% rename from odoo/addons/test_new_api/demo_data.xml rename to 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 @@ Stuff - + @@ -20,7 +20,6 @@ - What's up? 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 similarity index 100% rename from odoo/addons/test_new_api/models.py rename to 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 similarity index 100% rename from odoo/addons/test_new_api/ir.model.access.csv rename to 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 similarity index 100% rename from odoo/addons/test_new_api/assets.xml rename to 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 similarity index 100% rename from odoo/addons/test_new_api/views.xml rename to odoo/addons/test_new_api/views/test_new_api_views.xml diff --git a/odoo/addons/test_performance/__manifest__.py b/odoo/addons/test_performance/__manifest__.py index ec3daa51a3f..e33ff4d4328 100644 --- a/odoo/addons/test_performance/__manifest__.py +++ b/odoo/addons/test_performance/__manifest__.py @@ -7,7 +7,4 @@ 'data': [ 'security/ir.model.access.csv', ], - 'demo': [ - 'demo/demo.xml', - ], } diff --git a/odoo/addons/test_performance/demo/demo.xml b/odoo/addons/test_performance/demo/demo.xml deleted file mode 100644 index 327e9082319..00000000000 --- a/odoo/addons/test_performance/demo/demo.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - Object 0 - 0 - - - - Object 1 - 10 - - - - Object 2 - 20 - - - - Object 3 - 30 - - - - Object 4 - 40 - - - - diff --git a/odoo/addons/test_performance/tests/test_performance.py b/odoo/addons/test_performance/tests/test_performance.py index 1db2e33f6d2..eaae5f41f10 100644 --- a/odoo/addons/test_performance/tests/test_performance.py +++ b/odoo/addons/test_performance/tests/test_performance.py @@ -4,11 +4,44 @@ from collections import defaultdict import json +from odoo.addons.base.tests.common import SavepointCaseWithUserDemo from odoo.tests.common import TransactionCase, users, warmup, tagged from odoo.tools import mute_logger -class TestPerformance(TransactionCase): +class TestPerformance(SavepointCaseWithUserDemo): + + @classmethod + def setUpClass(cls): + super(TestPerformance, cls).setUpClass() + cls._load_partners_set() + + partner3 = cls.env['res.partner'].search([('name', '=', 'AnalytIQ')], limit=1) + partner4 = cls.env['res.partner'].search([('name', '=', 'Urban Trends')], limit=1) + partner10 = cls.env['res.partner'].search([('name', '=', 'Ctrl-Alt-Fix')], limit=1) + partner12 = cls.env['res.partner'].search([('name', '=', 'Ignitive Labs')], limit=1) + + cls.env['test_performance.base'].create([{ + 'name': 'Object 0', + 'value': 0, + 'partner_id': partner3.id, + }, { + 'name': 'Object 1', + 'value': 10, + 'partner_id': partner3.id, + }, { + 'name': 'Object 2', + 'value': 20, + 'partner_id': partner4.id, + }, { + 'name': 'Object 3', + 'value': 30, + 'partner_id': partner10.id, + }, { + 'name': 'Object 4', + 'value': 40, + 'partner_id': partner12.id, + }]) @users('__system__', 'demo') @warmup @@ -377,9 +410,10 @@ class TestPerformance(TransactionCase): def expected_read_group(self): groups = defaultdict(list) - for record in self.env['test_performance.base'].search([]): + all_records = self.env['test_performance.base'].search([]) + for record in all_records: groups[record.partner_id.id].append(record.value) - partners = self.env['res.partner'].search([('id', 'in', list(groups))]) + partners = self.env['res.partner'].search([('id', 'in', all_records.mapped('partner_id').ids)]) return [{ '__domain': [('partner_id', '=', partner.id)], 'partner_id': (partner.id, partner.display_name),