[IMP] base/test_*: Adapt tests to work with/without demo data
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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})
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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"]]
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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('<p><b>Click on Reconcile</p>'),
|
||||
position: "right",
|
||||
}, {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import models
|
||||
|
||||
@@ -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',
|
||||
],
|
||||
}
|
||||
|
||||
+1
-2
@@ -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">
|
||||
@@ -0,0 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import test_new_api
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -7,7 +7,4 @@
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
],
|
||||
'demo': [
|
||||
'demo/demo.xml',
|
||||
],
|
||||
}
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="object0" model="test_performance.base">
|
||||
<field name="name">Object 0</field>
|
||||
<field name="value">0</field>
|
||||
<field name="partner_id" ref="base.res_partner_3"/>
|
||||
</record>
|
||||
<record id="object1" model="test_performance.base">
|
||||
<field name="name">Object 1</field>
|
||||
<field name="value">10</field>
|
||||
<field name="partner_id" ref="base.res_partner_3"/>
|
||||
</record>
|
||||
<record id="object2" model="test_performance.base">
|
||||
<field name="name">Object 2</field>
|
||||
<field name="value">20</field>
|
||||
<field name="partner_id" ref="base.res_partner_4"/>
|
||||
</record>
|
||||
<record id="object3" model="test_performance.base">
|
||||
<field name="name">Object 3</field>
|
||||
<field name="value">30</field>
|
||||
<field name="partner_id" ref="base.res_partner_10"/>
|
||||
</record>
|
||||
<record id="object4" model="test_performance.base">
|
||||
<field name="name">Object 4</field>
|
||||
<field name="value">40</field>
|
||||
<field name="partner_id" ref="base.res_partner_12"/>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user