1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
|
# -*- coding: utf-8 -*-
import time
from odoorpc import error
from odoorpc.env import Environment
from odoorpc.models import Model
from odoorpc.tests import LoginTestCase
class TestModel(LoginTestCase):
def setUp(self):
LoginTestCase.setUp(self)
self.partner_obj = self.odoo.env['res.partner']
self.p0_id = self.partner_obj.create({'name': "Parent"})
self.p1_id = self.partner_obj.create({'name': "Child 1"})
self.p2_id = self.partner_obj.create({'name': "Child 2"})
self.group_obj = self.odoo.env['res.groups']
self.u0_id = self.user_obj.create(
{'name': "TestOdooRPC", 'login': 'test_%s' % time.time()}
)
self.g1_id = self.group_obj.create({'name': "Group 1"})
self.g2_id = self.group_obj.create({'name': "Group 2"})
def test_create_model_class(self):
partner_obj = self.odoo.env['res.partner']
self.assertEqual(partner_obj._name, 'res.partner')
self.assertIn('name', partner_obj._columns)
self.assertIsInstance(partner_obj.env, Environment)
def test_model_browse(self):
partner = self.partner_obj.browse(1)
self.assertIsInstance(partner, Model)
self.assertEqual(partner.id, 1)
self.assertEqual(partner.ids, [1])
self.assertEqual(partner.env, self.partner_obj.env)
partners = self.partner_obj.browse([1])
self.assertIsInstance(partners, Model)
self.assertEqual(partners.id, 1)
self.assertEqual(partners.ids, [1])
self.assertEqual(partners.env, self.partner_obj.env)
self.assertEqual(partners.ids, partner.ids)
def test_model_browse_false(self):
partner = self.partner_obj.browse(False)
self.assertEqual(len(partner), 0)
def test_model_browse_wrong_id(self):
self.assertRaises(
ValueError, self.partner_obj.browse, 9999999
) # Wrong ID
self.assertRaises(
error.RPCError, self.partner_obj.browse, "1"
) # Wrong ID type
def test_model_browse_without_arg(self):
self.assertRaises(TypeError, self.partner_obj.browse)
def test_model_rpc_method(self):
user_obj = self.odoo.env['res.users']
user_obj.name_get(self.odoo.env.uid)
self.odoo.env['ir.sequence'].get('fake.code') # Return False
def test_model_rpc_method_error_no_arg(self):
# Handle exception (execute a 'name_get' with without args)
user_obj = self.odoo.env['res.users']
self.assertRaises(error.RPCError, user_obj.name_get) # No arg
def test_model_rpc_method_error_wrong_args(self):
# Handle exception (execute a 'search' with wrong args)
user_obj = self.odoo.env['res.users']
self.assertRaises(error.RPCError, user_obj.search, False) # Wrong arg
def test_model_with_context(self):
Product = self.odoo.env['product.product']
product_id = Product.create(
{'name': u"Product invisible", 'active': False}
)
product_ids = Product.search([])
self.assertNotIn(product_id, product_ids)
product_ids = Product.with_context(active_test=False).search([])
self.assertIn(product_id, product_ids)
# Check that the previous environment has not been impacted
product_ids = Product.search([])
self.assertNotIn(product_id, product_ids)
def test_record_getitem_field(self):
partner = self.partner_obj.browse(1)
self.assertEqual(partner['id'], 1)
self.assertEqual(partner['name'], partner.name)
def test_record_getitem_integer(self):
partner = self.partner_obj.browse(1)
self.assertEqual(partner[0], partner)
def test_record_getitem_slice(self):
partner = self.partner_obj.browse(1)
self.assertEqual([record.id for record in partner[:]], [1])
def test_record_iter(self):
ids = self.partner_obj.search([])[:5]
partners = self.partner_obj.browse(ids)
self.assertEqual({partner.id for partner in partners}, set(ids))
partner = partners[0]
self.assertIn(partner.id, partners.ids)
self.assertEqual(id(partner._values), id(partners._values))
def test_record_with_context(self):
user = self.odoo.env.user
self.assertEqual(user.env.lang, 'en_US')
user_fr = user.with_context(lang='fr_FR')
self.assertEqual(user_fr.env.lang, 'fr_FR')
# Install 'fr_FR' and test the use of context with it
self._install_lang("fr_FR")
# Read data with two languages
Country = self.odoo.env['res.country']
de_id = Country.search([('code', '=', 'DE')])[0]
de = Country.browse(de_id)
self.assertEqual(de.name, 'Germany')
self.assertEqual(de.with_context(lang='fr_FR').name, 'Allemagne')
# Write data with two languages
Product = self.odoo.env['product.product']
self.assertEqual(Product.env.lang, 'en_US')
name_en = "Product en_US"
product_id = Product.create({'name': name_en})
product_en = Product.browse(product_id)
self.assertEqual(product_en.name, name_en)
product_fr = product_en.with_context(lang='fr_FR')
self.assertEqual(product_fr.env.lang, 'fr_FR')
name_fr = "Produit fr_FR"
product_fr.write({'name': name_fr})
product_fr = product_fr.with_context() # Refresh the recordset
self.assertEqual(product_fr.name, name_fr)
self.assertEqual(Product.env.lang, 'en_US')
product_en = Product.browse(product_id)
self.assertEqual(product_en.name, name_en)
new_name_fr = "%s (nouveau)" % name_fr
product_fr.name = new_name_fr
product_fr = product_fr.with_context() # Refresh the recordset
self.assertEqual(product_fr.name, new_name_fr)
def test_record_display_name(self):
p_id = self.partner_obj.search([])[:1][0]
partner = self.partner_obj.browse(p_id)
try:
partner.display_name
except Exception as exc:
self.fail(exc)
|