From 04dc074804f78f764ed35e01d30cbfd9aca4564c Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Mon, 4 Nov 2019 16:20:09 +0100 Subject: [IMP] base: Adapt tests to work with/without demo data --- odoo/addons/base/tests/test_api.py | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) (limited to 'odoo/addons/base/tests/test_api.py') diff --git a/odoo/addons/base/tests/test_api.py b/odoo/addons/base/tests/test_api.py index 158fe2ee500..149e7b3a261 100644 --- a/odoo/addons/base/tests/test_api.py +++ b/odoo/addons/base/tests/test_api.py @@ -2,14 +2,19 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import models +from odoo.addons.base.tests.common import SavepointCaseWithUserDemo from odoo.tools import mute_logger -from odoo.tests import common from odoo.exceptions import AccessError -class TestAPI(common.TransactionCase): +class TestAPI(SavepointCaseWithUserDemo): """ test the new API of the ORM """ + @classmethod + def setUpClass(cls): + super(TestAPI, cls).setUpClass() + cls._load_partners_set() + def assertIsRecordset(self, value, model): self.assertIsInstance(value, models.BaseModel) self.assertEqual(value._name, model) @@ -48,8 +53,8 @@ class TestAPI(common.TransactionCase): @mute_logger('odoo.models') def test_02_query_limit(self): """ Build a recordset with offset, and check equivalence. """ - partners1 = self.env['res.partner'].search([], limit=10) - partners2 = self.env['res.partner'].search([])[:10] + partners1 = self.env['res.partner'].search([], order='id asc', limit=10) + partners2 = self.env['res.partner'].search([], order='id asc')[:10] self.assertIsRecordset(partners1, 'res.partner') self.assertIsRecordset(partners2, 'res.partner') self.assertEqual(list(partners1), list(partners2)) @@ -57,8 +62,8 @@ class TestAPI(common.TransactionCase): @mute_logger('odoo.models') def test_03_query_offset_limit(self): """ Build a recordset with offset and limit, and check equivalence. """ - partners1 = self.env['res.partner'].search([], offset=3, limit=7) - partners2 = self.env['res.partner'].search([])[3:10] + partners1 = self.env['res.partner'].search([], order='id asc', offset=3, limit=7) + partners2 = self.env['res.partner'].search([], order='id asc')[3:10] self.assertIsRecordset(partners1, 'res.partner') self.assertIsRecordset(partners2, 'res.partner') self.assertEqual(list(partners1), list(partners2)) @@ -173,7 +178,7 @@ class TestAPI(common.TransactionCase): partners[0].company_id.write({'name': 'Fools'}) # create an environment with the demo user - demo = self.env['res.users'].search([('login', '=', 'demo')])[0] + demo = self.env['res.users'].search([('login', 'ilike', 'demo')])[0] demo_env = self.env(user=demo) self.assertNotEqual(demo_env, self.env) @@ -193,16 +198,18 @@ class TestAPI(common.TransactionCase): self.assertEqual(p.env, demo_env) # demo user can read but not modify company data - demo_partners[0].company_id.name + demo_partner = self.env['res.partner'].search([('name', '=', 'Landon Roberts')]).with_user(demo) + self.assertTrue(demo_partner.company_id, 'This partner is supposed to be linked to a company') + demo_partner.company_id.name with self.assertRaises(AccessError): - demo_partners[0].company_id.write({'name': 'Pricks'}) + demo_partner.company_id.write({'name': 'Pricks'}) # remove demo user from all groups demo.write({'groups_id': [(5,)]}) # demo user can no longer access partner data with self.assertRaises(AccessError): - demo_partners[0].company_id.name + demo_partner.company_id.name @mute_logger('odoo.models') def test_60_cache(self): @@ -319,7 +326,7 @@ class TestAPI(common.TransactionCase): # the recordset operations below share the prefetch set same_prefetch(partners, partners.browse(partners.ids)) - same_prefetch(partners, partners.with_user(self.env.ref('base.user_demo'))) + same_prefetch(partners, partners.with_user(self.user_demo)) same_prefetch(partners, partners.with_context(active_test=False)) same_prefetch(partners, partners[:10].with_prefetch(partners._prefetch_ids)) @@ -338,7 +345,7 @@ class TestAPI(common.TransactionCase): 'name': 'Non-empty relational fields', 'country_id': self.ref('base.be'), 'bank_ids': [(0, 0, {'acc_number': 'FOO42'})], - 'category_id': [(4, self.ref('base.res_partner_category_0'))], + 'category_id': [(4, self.partner_category.id)], } partners = partners.create(vals0) + partners.create(vals1) for partner in partners: @@ -511,5 +518,5 @@ class TestAPI(common.TransactionCase): self.assertEqual(ps.sorted('name').ids, by_name_ids) # sort by inverse name, with a field name - by_name_ids.reverse() + by_name_ids = [p.id for p in sorted(ps, key=lambda p: p.name, reverse=True)] self.assertEqual(ps.sorted('name', reverse=True).ids, by_name_ids) -- cgit v1.2.3