GoodERP
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

165 lines
5.9KB

  1. # Copyright 2016 上海开阖软件有限公司 (http://www.osbzr.com)
  2. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
  3. from odoo.tests.common import TransactionCase
  4. from odoo.exceptions import UserError, ValidationError
  5. from datetime import datetime, timedelta
  6. class TestStaff(TransactionCase):
  7. def test_get_image(self):
  8. '''拿到用户头像,职位的onchange'''
  9. user_lucy = self.env['res.users'].create({
  10. 'name': 'Lucy',
  11. 'login': 'lucy@osbzr.com',
  12. })
  13. staff_pro = self.env['staff'].create({
  14. 'work_phone': 12345678901,
  15. 'work_email': 'lucy@osbzr.com',
  16. 'name': 'Lucy',
  17. 'code': 'lucy',
  18. 'type': 'member',
  19. 'user_id': user_lucy.id,
  20. 'job_id': self.env.ref('staff.staff_job_1').id})
  21. staff_pro.onchange_job_id()
  22. def test_staff_contract_over_date(self):
  23. '''测试:员工合同到期,发送邮件给员工 和 部门经理(如果存在)'''
  24. job = self.browse_ref('staff.ir_cron_module_remind_contract_over_date')
  25. job.interval_type = 'minutes'
  26. job.nextcall = (datetime.now() + timedelta(hours=8)
  27. ).strftime('%Y-%m-%d %H:%M:%S')
  28. # not staff.contract_ids
  29. self.env['staff'].staff_contract_over_date()
  30. # has staff.contract_ids but no apartment manager
  31. staff_lily = self.env.ref('staff.lili')
  32. staff_lily.work_email = 'lili@sina.com.cn'
  33. staff_lily.contract_ids.create({'staff_id': staff_lily.id,
  34. 'basic_wage': 123456,
  35. 'over_date': datetime.now().strftime("%Y-%m-%d"),
  36. 'job_id': self.env.ref('staff.staff_job_1').id})
  37. # has staff.contract_ids and apartment manager
  38. self.env.ref('staff.staff_1').work_email = 'admin@sina.com.cn'
  39. staff_lily.parent_id = self.env.ref('staff.staff_1').id
  40. self.env['staff'].staff_contract_over_date()
  41. def test_onchange_basic_wage(self):
  42. ''' 测试:选择基本工资时带出五险一金比例,计算出应交金额并填充 '''
  43. company = self.env.company
  44. company.endowment_ratio = 8
  45. # company.health_ratio = 2
  46. # company.unemployment_ratio = 0.5
  47. # company.housing_fund_ratio = 7
  48. # company.endowment_co_ratio = 20
  49. # company.health_co_ratio = 10
  50. # company.unemployment_co_ratio = 1
  51. # company.injury_ratio = 1
  52. # company.maternity_ratio = 0.5
  53. # company.housing_fund_co_ratio = 7
  54. lili_contract = self.env.ref('staff.contract_staff_lili')
  55. lili_contract.basic_wage = 13000
  56. lili_contract.onchange_basic_wage()
  57. def test_check_work_email(self):
  58. ''' Test: check work email '''
  59. staff_lili = self.env.ref('staff.lili')
  60. # 测试邮箱格式正确
  61. staff_lili.work_email = 'gooderp@osbzr.com'
  62. # 测试邮箱格式不正确,报错
  63. with self.assertRaises(UserError):
  64. staff_lili.work_email = 'gooderp'
  65. class TestStaffDepartment(TransactionCase):
  66. ''' 测试 部门 '''
  67. def test_check_parent_id(self):
  68. ''' 测试 上级部门不能选择自己和下级的部门 '''
  69. department_1 = self.env.ref('staff.department_1')
  70. department_2 = self.env['staff.department'].create({
  71. 'name': '财务部',
  72. 'code': 'dep_finance',
  73. 'type': 'department',
  74. 'parent_id': department_1.id,
  75. })
  76. with self.assertRaises(UserError):
  77. department_1.parent_id = department_2.id
  78. def test_view_detail(self):
  79. ''' 测试部门list 打开部门 '''
  80. department_1 = self.env.ref('staff.department_1')
  81. department_1.view_detail()
  82. class TestMailMessage(TransactionCase):
  83. def setUp(self):
  84. '''准备基本数据'''
  85. super(TestMailMessage, self).setUp()
  86. self.staff = self.browse_ref('staff.staff_1')
  87. def test_staff_birthday_message(self):
  88. '''测试:员工生日当天,whole company 会收到祝福信息'''
  89. # 设置了员工生日
  90. self.staff.birthday = datetime.now()
  91. job = self.browse_ref(
  92. 'staff.ir_cron_module_update_notification_birthday')
  93. job.interval_type = 'minutes'
  94. job.nextcall = (datetime.now() + timedelta(hours=8)
  95. ).strftime('%Y-%m-%d %H:%M:%S')
  96. self.env['mail.message'].staff_birthday_message()
  97. class TestResUsers(TransactionCase):
  98. def test_check_user_id(self):
  99. ''' 测试 一个用户只能对应一个员工 '''
  100. # core 模块里
  101. user = self.env.ref('base.user_demo')
  102. self.env.ref('staff.lili').user_id = user.id
  103. with self.assertRaises(UserError):
  104. self.env.ref('staff.staff_1').user_id = user.id
  105. class TestLeave(TransactionCase):
  106. ''' 测试 请假 '''
  107. def setUp(self):
  108. '''准备基本数据'''
  109. super(TestLeave, self).setUp()
  110. self.leave = self.browse_ref('staff.leave_1')
  111. def test_set_staff_id(self):
  112. ''' 测试 请假人 默认值 '''
  113. self.env['staff.leave'].create({
  114. 'name': 'go back home',
  115. 'leave_type': 'no_pay',
  116. })
  117. def test_leave_done(self):
  118. '''审核请假单'''
  119. self.leave.leave_done()
  120. self.assertTrue(self.leave.state == 'done')
  121. # 重复审核报错
  122. with self.assertRaises(UserError):
  123. self.leave.leave_done()
  124. def test_leave_draft(self):
  125. '''反审核请假单'''
  126. self.leave.leave_done()
  127. self.leave.leave_draft()
  128. self.assertTrue(self.leave.state == 'draft')
  129. # 重复反审核审核报错
  130. with self.assertRaises(UserError):
  131. self.leave.leave_draft()
  132. def test_check_leave_dates(self):
  133. '''请假天数不能小于或等于零'''
  134. with self.assertRaises(UserError):
  135. self.leave.leave_dates = 0
上海开阖软件有限公司 沪ICP备12045867号-1