Files
suite/mrp_bom_add/tests/test_mrp_bom_add.py
2022-06-01 19:29:57 +00:00

138 lines
4.7 KiB
Python

from odoo.tests.common import TransactionCase
class TestMRPBOMAdd(TransactionCase):
def setUp(self):
super(TestMRPBOMAdd, self).setUp()
self.attr1 = self.env['product.attribute'].create({
'name': 'Test Attr1',
'create_variant': 'always',
'display_type': 'radio',
})
self.attr1_val1 = self.env['product.attribute.value'].create({
'attribute_id': self.attr1.id,
'name': 'Test Attr1 Val1'
})
self.attr1_val2 = self.env['product.attribute.value'].create({
'attribute_id': self.attr1.id,
'name': 'Test Attr2 Val1'
})
self.attr2 = self.env['product.attribute'].create({
'name': 'Test Attr2',
'create_variant': 'always',
'display_type': 'radio',
})
self.attr2_val1 = self.env['product.attribute.value'].create({
'attribute_id': self.attr2.id,
'name': 'Test Attr2 Val1'
})
self.attr2_val2 = self.env['product.attribute.value'].create({
'attribute_id': self.attr2.id,
'name': 'Test Attr2 Val2'
})
# 2 variant product
self.manufacture = self.env['product.template'].create({
'name': 'Test Manufactured',
'attribute_line_ids': [
(0, 0, {
'attribute_id': self.attr1.id,
'value_ids': [(4, self.attr1_val1.id, 0)],
}),
(0, 0, {
'attribute_id': self.attr2.id,
'value_ids': [(4, self.attr2_val1.id, 0), (4, self.attr2_val2.id, 0)],
}),
]
})
# 4 variant component
self.component = self.env['product.template'].create({
'name': 'Test Component',
'attribute_line_ids': [
(0, 0, {
'attribute_id': self.attr1.id,
'value_ids': [(4, self.attr1_val1.id, 0), (4, self.attr1_val2.id, 0)],
}),
(0, 0, {
'attribute_id': self.attr2.id,
'value_ids': [(4, self.attr2_val1.id, 0), (4, self.attr2_val2.id, 0)],
}),
]
})
self.bom = self.env['mrp.bom'].create({
'product_tmpl_id': self.manufacture.id,
'product_qty': 1.0,
'product_uom_id': self.manufacture.uom_id.id,
})
def test_internals(self):
# Ensure BoM is empty
self.assertEqual(len(self.bom.bom_line_ids), 0)
wizard = self.env['mrp.bom.add'].create({
'bom_id': self.bom.id,
})
wizard.product_tmpl_id = self.component
self.assertEqual(wizard._compute_attribute_value_ids(),
self.component.mapped('attribute_line_ids.value_ids'))
self.assertEqual(wizard._compute_product_ids(), self.component.product_variant_ids)
wizard.limit_possible = True
self.assertEqual(wizard._compute_attribute_value_ids(),
self.manufacture.mapped('attribute_line_ids.value_ids'))
def test_main(self):
# Ensure BoM is empty
self.assertEqual(len(self.bom.bom_line_ids), 0)
wizard = self.env['mrp.bom.add'].create({
'bom_id': self.bom.id,
})
self.assertEqual(wizard.product_variant_count, 0)
wizard.product_tmpl_id = self.component
self.assertEqual(wizard.product_variant_count, 4)
wizard.add_variants()
self.assertEqual(len(self.bom.bom_line_ids), 4)
def test_limited(self):
# Ensure BoM is empty
self.assertEqual(len(self.bom.bom_line_ids), 0)
wizard = self.env['mrp.bom.add'].create({
'bom_id': self.bom.id,
})
self.assertEqual(wizard.product_variant_count, 0)
wizard.limit_possible = True
wizard.product_tmpl_id = self.component
self.assertEqual(wizard.product_variant_count, 2)
wizard.add_variants()
self.assertEqual(len(self.bom.bom_line_ids), 2)
def test_replace(self):
# Ensure BoM is empty
self.assertEqual(len(self.bom.bom_line_ids), 0)
wizard = self.env['mrp.bom.add'].create({
'bom_id': self.bom.id,
})
wizard.product_tmpl_id = self.component
self.assertEqual(wizard.product_variant_count, 4)
wizard.add_variants()
self.assertEqual(len(self.bom.bom_line_ids), 4)
# Additive
wizard.add_variants()
self.assertEqual(len(self.bom.bom_line_ids), 8)
# remove those 8 lines when adding new ones
wizard.replace_existing = True
wizard.add_variants()
self.assertEqual(len(self.bom.bom_line_ids), 4)