GoodERP
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

182 lines
6.8KB

  1. # Copyright 2016 上海开阖软件有限公司 (http://www.osbzr.com)
  2. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
  3. from dateutil.relativedelta import relativedelta
  4. from odoo.tests.common import TransactionCase
  5. from psycopg2 import IntegrityError
  6. from odoo.exceptions import UserError
  7. from odoo.tools import mute_logger
  8. from odoo import fields
  9. class TestCore(TransactionCase):
  10. def test_partner(self):
  11. ''' 测试删除已有客户的分类报错 '''
  12. with mute_logger('odoo.sql_db'):
  13. with self.assertRaises(IntegrityError):
  14. self.env.ref('core.customer_category_1').unlink()
  15. def test_partner_name_search(self):
  16. """
  17. partner在many2one字段中支持按编号搜索
  18. """
  19. partner = self.env.ref('core.jd')
  20. # 使用 name 来搜索京东
  21. result = self.env['partner'].name_search('京东')
  22. real_result = [(partner.id, '[jd]京东')]
  23. self.assertEqual(result, real_result)
  24. # 使用 code 来搜索京东
  25. res = self.env['partner'].name_search('jd')
  26. self.assertEqual(res, real_result)
  27. # 编号 ilike
  28. partner.code = '京东'
  29. real_result = [(partner.id, '[京东]京东')]
  30. res = self.env['partner'].name_search('京')
  31. self.assertEqual(res, real_result)
  32. def test_partner_write(self):
  33. ''' 测试 业务伙伴应收/应付余额不为0时,不允许取消对应的客户/供应商身份 '''
  34. partner = self.env.ref('core.jd')
  35. partner.receivable = 100
  36. with self.assertRaises(UserError):
  37. partner.c_category_id = False
  38. partner = self.env.ref('core.lenovo')
  39. partner.payable = 100
  40. with self.assertRaises(UserError):
  41. partner.s_category_id = False
  42. partner.copy()
  43. def test_res_currency(self):
  44. """测试阿拉伯数字转换成中文大写数字的方法"""
  45. self.env['res.currency'].rmb_upper(10000100.3)
  46. # 测试输入value为负时的货币大写问题
  47. self.assertTrue(
  48. self.env['res.currency'].rmb_upper(-10000100.3) == '负壹仟万零壹佰元叁角整')
  49. def test_compute_days_qualify(self):
  50. """计算资质到期天数。"""
  51. partner = self.env.ref('core.jd')
  52. partner.date_qualify = fields.Date.today() + relativedelta(
  53. days=1)
  54. self.assertEqual(partner.days_qualify, 1)
  55. def test_check_category_exists(self):
  56. ''' test_check_category_exists '''
  57. partner = self.env.ref('core.jd')
  58. with self.assertRaises(UserError):
  59. partner.c_category_id = False
  60. def test_unlink_category_with_note(self):
  61. ''' 系统创建的类别不可以删除 '''
  62. cate = self.env.ref('core.cat_donate')
  63. cate.note = 'A'
  64. with self.assertRaises(UserError):
  65. cate.unlink()
  66. def test_name_for_create(self):
  67. self.env['ir.sequence'].create({
  68. 'name': 'number for bank account',
  69. 'code': 'bank.account'})
  70. self.env['bank.account'].create({})
  71. def test_pay_mathod(self):
  72. self.env.ref('core.main_pay_method').get_due_date()
  73. class TestGoods(TransactionCase):
  74. def test_create(self):
  75. g = self.env['goods'].create({
  76. 'name': 'test',
  77. 'code': 'cod',
  78. 'category_id': self.env.ref('core.goods_category_1').id,
  79. 'uom_id': self.env.ref('core.uom_pc').id,
  80. })
  81. self.env['goods'].name_search('cod')
  82. self.env['goods'].name_search('co')
  83. n = g.copy()
  84. self.assertEqual(n.name, g.name + ' (copy)')
  85. class TestResUsers(TransactionCase):
  86. def test_write(self):
  87. '''修改管理员权限'''
  88. user_demo = self.env.ref('base.user_demo')
  89. user_demo.groups_id = [(4, self.env.ref('base.group_erp_manager').id)]
  90. user_admin = self.env.ref('base.user_admin').with_user(user_demo)
  91. with self.assertRaises(UserError):
  92. user_admin.name = 'adsf'
  93. with self.assertRaises(UserError):
  94. user_admin.groups_id = [
  95. (3, self.env.ref('base.group_erp_manager').id)]
  96. # 新建用户邮箱填成 @
  97. tuser = self.env['res.users'].create({
  98. 'name': 'test_email',
  99. 'login': 'test_email',
  100. })
  101. # 同时创建两个员工指向相同用户报错
  102. self.env['staff'].create({'user_id': tuser.id})
  103. with self.assertRaises(UserError):
  104. self.env['staff'].create({'user_id': tuser.id})
  105. class TestResCompany(TransactionCase):
  106. def test_get_logo(self):
  107. ''' 取默认logo '''
  108. self.env['res.company'].create({
  109. 'name': 'demo company',
  110. 'partner_id': self.env.ref('core.zt').id
  111. })
  112. def test_check_email(self):
  113. ''' test check email '''
  114. company = self.env['res.company'].create({
  115. 'name': 'demo company',
  116. 'partner_id': self.env.ref('core.zt').id
  117. })
  118. # 邮箱格式正确
  119. company.email = 'gooderp@osbzr.com'
  120. # The legacy regex constraint was removed in c4b9148; this is a
  121. # stored contact field, not an email-delivery validator.
  122. company.email = 'GoodERP <gooderp@osbzr.com>'
  123. self.assertEqual(company.email, 'GoodERP <gooderp@osbzr.com>')
  124. company.email = False
  125. self.assertFalse(company.email)
  126. def test_get_html_table(self):
  127. self.env.company._get_html_table({
  128. 'col': ['name'],
  129. 'val': [['jeff']]})
  130. class TestWarehouse(TransactionCase):
  131. def test_search(self):
  132. self.env['warehouse'].name_search('General')
  133. self.env['warehouse'].name_search('')
  134. # 错误的仓库类型报错
  135. with self.assertRaises(UserError):
  136. self.env['warehouse'].get_warehouse_by_type('wrong_type')
  137. # 没有客户类型的仓库
  138. with self.assertRaises(UserError):
  139. self.env['warehouse'].get_warehouse_by_type('customer')
  140. self.env['warehouse'].get_warehouse_by_type('stock')
  141. class TestWarehouseDisplay(TransactionCase):
  142. def test_name_and_code_search_have_same_documented_label(self):
  143. warehouse = self.env['warehouse'].create({'name': '仓库显示契约测试', 'code': 'DISPLAY-CONTRACT'})
  144. expected = [(warehouse.id, '[DISPLAY-CONTRACT]仓库显示契约测试')]
  145. self.assertEqual(self.env['warehouse'].name_search('仓库显示契约测试'), expected)
  146. self.assertEqual(self.env['warehouse'].name_search('DISPLAY-CONTRACT'), expected)
  147. warehouse.code = 'DISPLAY-UPDATED'
  148. self.assertEqual(warehouse.display_name, '[DISPLAY-UPDATED]仓库显示契约测试')
  149. def test_no_code_uses_plain_name(self):
  150. warehouse = self.env['warehouse'].create({'name': '无编号仓库显示测试'})
  151. self.assertEqual(warehouse.display_name, '无编号仓库显示测试')
上海开阖软件有限公司 沪ICP备12045867号-1