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.

159 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 odoo.tests.common import TransactionCase
  4. from odoo.exceptions import ValidationError, UserError
  5. class TestGoodsClass(TransactionCase):
  6. def setUp(self):
  7. ''' 基本数据 '''
  8. super(TestGoodsClass, self).setUp()
  9. self.fruits_vegetables = self.env.ref('goods.fruits_vegetables')
  10. self.partner_services = self.env.ref('goods.partner_services')
  11. def test_check_category_recursion(self):
  12. ''' 测试,创建循环分类'''
  13. self.fruits_vegetables.parent_id = self.partner_services.id
  14. with self.assertRaises(ValidationError):
  15. self.partner_services.parent_id = self.fruits_vegetables.id
  16. class TestGoods(TransactionCase):
  17. def setUp(self):
  18. super(TestGoods, self).setUp()
  19. self.goods_mouse = self.env.ref('goods.mouse')
  20. def test_conversion_unit(self):
  21. ''' 单位转化,1捆网线12根 '''
  22. res1 = self.env.ref('goods.cable').conversion_unit(10)
  23. self.assertEqual(res1, 120)
  24. def test_anti_conversion_unit(self):
  25. ''' 单位转化,12根网线1捆 '''
  26. res2 = self.env.ref('goods.cable').anti_conversion_unit(12)
  27. self.assertEqual(res2, 1)
  28. def test_uom(self):
  29. cable = self.browse_ref('goods.cable')
  30. uom_pc = self.browse_ref('core.uom_pc')
  31. cable.uom_id = uom_pc
  32. cable.onchange_uom()
  33. self.assertEqual(cable.uos_id, cable.uom_id)
  34. def test_onchange_using_batch(self):
  35. '''当将管理批号的勾去掉后,自动将管理序列号的勾去掉'''
  36. self.goods_mouse.using_batch = True
  37. self.goods_mouse.force_batch_one = True
  38. self.goods_mouse.using_batch = False
  39. self.goods_mouse.onchange_using_batch()
  40. self.assertEqual(self.goods_mouse.force_batch_one, False)
  41. def test_unlink(self):
  42. ''' 删除商品其对应属性也删除 '''
  43. self.env.ref('goods.keyboard').unlink()
  44. with self.assertRaises(ValueError):
  45. self.env.ref('goods.attribute_value_white')
  46. def test_name_search(self):
  47. '''测试goods的按名字和编号搜索'''
  48. mouse = self.env.ref('goods.mouse')
  49. # 使用name来搜索键盘
  50. result = self.env['goods'].name_search('鼠标')
  51. real_result = [(mouse.id,
  52. mouse.code + '_' + mouse.name)]
  53. self.assertEqual(result, real_result)
  54. # 使用code来搜索键盘
  55. result = self.env['goods'].name_search('001')
  56. self.assertEqual(result, real_result)
  57. # goods name_search code ilike name
  58. self.env['goods'].name_search('00%')
  59. def test_create(self):
  60. '''导入商品时,如果辅助单位为空,则用计量单位来填充它'''
  61. goods = self.env['goods'].create({
  62. 'name': '显示器',
  63. 'category_id': self.env.ref('core.goods_category_1').id,
  64. 'uom_id': self.env.ref('core.uom_pc').id,
  65. 'conversion': 1,
  66. 'cost': 1000,
  67. })
  68. self.assertTrue(goods.uos_id.id == self.env.ref('core.uom_pc').id)
  69. def test_copy(self):
  70. '''测试商品的复制功能'''
  71. mouse = self.goods_mouse.copy()
  72. self.assertEqual('鼠标 (copy)', mouse.name)
  73. def test_get_tax_rate(self):
  74. ''' Test: get tax rate '''
  75. fruits_vegetables = self.env.ref('goods.fruits_vegetables')
  76. partner_services = self.env.ref('goods.partner_services')
  77. fruits_vegetables.parent_id = partner_services.id
  78. # 取产品上的税率
  79. fruits_vegetables.tax_rate = 10.0
  80. self.goods_mouse.goods_class_id = fruits_vegetables.id
  81. mouse_tax_rate = self.goods_mouse.get_tax_rate(
  82. self.goods_mouse, False, 'buy')
  83. self.assertEqual(mouse_tax_rate, 10.0)
  84. # 取末级 产品分类 上的税率
  85. fruits_vegetables.tax_rate = False
  86. partner_services.tax_rate = 11.0
  87. mouse_tax_rate = self.goods_mouse.get_tax_rate(
  88. self.goods_mouse, False, 'buy')
  89. self.assertEqual(mouse_tax_rate, 11.0)
  90. # 逐级取 产品分类 上的 税率
  91. partner_services.tax_rate = False
  92. goods_class_first = self.env['goods.class'].create({
  93. 'name': '顶级分类',
  94. 'tax_rate': 12.0
  95. })
  96. partner_services.parent_id = goods_class_first.id
  97. mouse_tax_rate = self.goods_mouse.get_tax_rate(
  98. self.goods_mouse, False, 'buy')
  99. self.assertEqual(mouse_tax_rate, 12.0)
  100. # no goods
  101. self.goods_mouse.get_tax_rate(False, False, 'buy')
  102. class TestAttributes(TransactionCase):
  103. def test_ean_search(self):
  104. '''测试goods的按ean搜索'''
  105. iphone_value_white = self.env.ref('goods.iphone_value_white')
  106. result = self.env['attribute'].name_search('12345678987')
  107. real_result = [(iphone_value_white.id,
  108. iphone_value_white.value_id.name)]
  109. self.assertEqual(result, real_result)
  110. # return super
  111. self.env['attribute'].name_search('123')
  112. def test_check_value_ids(self):
  113. '''属性值的类别不能相同'''
  114. # if 语句
  115. iphone_white = self.env.ref('goods.iphone_white')
  116. iphone_white.check_value_ids()
  117. # else 语句
  118. new_att = self.env['attribute.value'].create({
  119. 'attribute_id': self.env.ref('goods.iphone_white').id,
  120. 'category_id': self.env.ref('goods.attribute_color').id,
  121. 'value_id': self.env.ref('goods.white').id, })
  122. with self.assertRaises(UserError):
  123. self.env.ref('goods.iphone').attribute_ids.write(
  124. {'value_ids': [(4, 0, new_att.id)]})
上海开阖软件有限公司 沪ICP备12045867号-1