GoodERP
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

164 lines
5.7KB

  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, partner.name)]
  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. res = self.env['partner'].name_search('京')
  30. self.assertEqual(res, real_result)
  31. def test_partner_write(self):
  32. ''' 测试 业务伙伴应收/应付余额不为0时,不允许取消对应的客户/供应商身份 '''
  33. partner = self.env.ref('core.jd')
  34. partner.receivable = 100
  35. with self.assertRaises(UserError):
  36. partner.c_category_id = False
  37. partner = self.env.ref('core.lenovo')
  38. partner.payable = 100
  39. with self.assertRaises(UserError):
  40. partner.s_category_id = False
  41. partner.copy()
  42. def test_res_currency(self):
  43. """测试阿拉伯数字转换成中文大写数字的方法"""
  44. self.env['res.currency'].rmb_upper(10000100.3)
  45. # 测试输入value为负时的货币大写问题
  46. self.assertTrue(
  47. self.env['res.currency'].rmb_upper(-10000100.3) == '负壹仟万零壹佰元叁角整')
  48. def test_compute_days_qualify(self):
  49. """计算资质到期天数。"""
  50. partner = self.env.ref('core.jd')
  51. partner.date_qualify = fields.Date.today() + relativedelta(
  52. days=1)
  53. self.assertEqual(partner.days_qualify, 1)
  54. def test_check_category_exists(self):
  55. ''' test_check_category_exists '''
  56. partner = self.env.ref('core.jd')
  57. with self.assertRaises(UserError):
  58. partner.c_category_id = False
  59. def test_unlink_category_with_note(self):
  60. ''' 系统创建的类别不可以删除 '''
  61. cate = self.env.ref('core.cat_donate')
  62. cate.note = 'A'
  63. with self.assertRaises(UserError):
  64. cate.unlink()
  65. def test_name_for_create(self):
  66. self.env['ir.sequence'].create({
  67. 'name': 'number for bank account',
  68. 'code': 'bank.account'})
  69. self.env['bank.account'].create({})
  70. def test_pay_mathod(self):
  71. self.env.ref('core.main_pay_method').get_due_date()
  72. class TestGoods(TransactionCase):
  73. def test_create(self):
  74. g = self.env['goods'].create({
  75. 'name': 'test',
  76. 'code': 'cod',
  77. 'category_id': self.env.ref('core.goods_category_1').id,
  78. 'uom_id': self.env.ref('core.uom_pc').id,
  79. })
  80. self.env['goods'].name_search('cod')
  81. self.env['goods'].name_search('co')
  82. n = g.copy()
  83. self.assertEqual(n.name, g.name + ' (copy)')
  84. class TestResUsers(TransactionCase):
  85. def test_write(self):
  86. '''修改管理员权限'''
  87. user_demo = self.env.ref('base.user_demo')
  88. user_demo.groups_id = [(4, self.env.ref('base.group_erp_manager').id)]
  89. user_admin = self.env.ref('base.user_admin').with_user(user_demo)
  90. with self.assertRaises(UserError):
  91. user_admin.name = 'adsf'
  92. with self.assertRaises(UserError):
  93. user_admin.groups_id = [
  94. (3, self.env.ref('base.group_erp_manager').id)]
  95. # 新建用户邮箱填成 @
  96. tuser = self.env['res.users'].create({
  97. 'name': 'test_email',
  98. 'login': 'test_email',
  99. })
  100. # 同时创建两个员工指向相同用户报错
  101. self.env['staff'].create({'user_id': tuser.id})
  102. with self.assertRaises(UserError):
  103. self.env['staff'].create({'user_id': tuser.id})
  104. class TestResCompany(TransactionCase):
  105. def test_get_logo(self):
  106. ''' 取默认logo '''
  107. self.env['res.company'].create({
  108. 'name': 'demo company',
  109. 'partner_id': self.env.ref('core.zt').id
  110. })
  111. def test_check_email(self):
  112. ''' test check email '''
  113. company = self.env['res.company'].create({
  114. 'name': 'demo company',
  115. 'partner_id': self.env.ref('core.zt').id
  116. })
  117. # 邮箱格式正确
  118. company.email = 'gooderp@osbzr.com'
  119. # 邮箱格式不正确,报错
  120. with self.assertRaises(UserError):
  121. company.email = 'gooderp'
  122. def test_get_html_table(self):
  123. self.env.company._get_html_table({
  124. 'col': ['name'],
  125. 'val': [['jeff']]})
  126. class TestWarehouse(TransactionCase):
  127. def test_search(self):
  128. self.env['warehouse'].name_search('General')
  129. self.env['warehouse'].name_search('')
  130. # 错误的仓库类型报错
  131. with self.assertRaises(UserError):
  132. self.env['warehouse'].get_warehouse_by_type('wrong_type')
  133. # 没有客户类型的仓库
  134. with self.assertRaises(UserError):
  135. self.env['warehouse'].get_warehouse_by_type('customer')
  136. self.env['warehouse'].get_warehouse_by_type('stock')
上海开阖软件有限公司 沪ICP备12045867号-1