oca-ocb-sale/odoo-bringout-oca-ocb-product/product/tests/common.py
Ernad Husremovic 73afc09215 19.0 vanilla
2026-03-09 09:32:12 +01:00

159 lines
5.2 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.fields import Command
from odoo.addons.uom.tests.common import UomCommon
class ProductCommon(UomCommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.group_product_pricelist = cls.quick_ref('product.group_product_pricelist')
cls.group_product_variant = cls.quick_ref('product.group_product_variant')
cls.product_category = cls.env['product.category'].create({
'name': 'Test Category',
})
cls.product, cls.service_product = cls.env['product.product'].create([{
'name': 'Test Product',
'type': 'consu',
'list_price': 20.0,
'categ_id': cls.product_category.id,
}, {
'name': 'Test Service Product',
'type': 'service',
'list_price': 50.0,
'categ_id': cls.product_category.id,
}])
cls.pricelist = cls.env['product.pricelist'].create({
'name': 'Test Pricelist',
})
# Archive all existing pricelists
cls.env['product.pricelist'].search([
('id', '!=', cls.pricelist.id),
]).action_archive()
@classmethod
def get_default_groups(cls):
groups = super().get_default_groups()
return groups | cls.quick_ref('product.group_product_manager')
@classmethod
def _enable_pricelists(cls):
cls.env.user.group_ids += cls.group_product_pricelist
@classmethod
def _enable_variants(cls):
cls.env.user.group_ids += cls.group_product_variant
@classmethod
def _create_pricelist(cls, **create_vals):
return cls.env['product.pricelist'].create({
'name': "Test Pricelist",
**create_vals,
})
@classmethod
def _create_product(cls, **create_vals):
return cls.env['product.product'].create({
'name': "Test Product",
'type': 'consu',
'list_price': 100.0,
'standard_price': 50.0,
'uom_id': cls.uom_unit.id,
'categ_id': cls.product_category.id,
**create_vals,
})
class ProductVariantsCommon(ProductCommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.size_attribute = cls.env['product.attribute'].create({
'name': 'Size',
'value_ids': [
Command.create({'name': 'S'}),
Command.create({'name': 'M'}),
Command.create({'name': 'L'}),
]
})
(
cls.size_attribute_s,
cls.size_attribute_m,
cls.size_attribute_l,
) = cls.size_attribute.value_ids
cls.color_attribute = cls.env['product.attribute'].create({
'name': 'Color',
'value_ids': [
Command.create({'name': 'red', 'sequence': 1}),
Command.create({'name': 'blue', 'sequence': 2}),
Command.create({'name': 'green', 'sequence': 3}),
],
})
(
cls.color_attribute_red,
cls.color_attribute_blue,
cls.color_attribute_green,
) = cls.color_attribute.value_ids
cls.no_variant_attribute = cls.env['product.attribute'].create({
'name': 'No variant',
'create_variant': 'no_variant',
'value_ids': [
Command.create({'name': 'extra'}),
Command.create({'name': 'second'}),
]
})
(
cls.no_variant_attribute_extra,
cls.no_variant_attribute_second,
) = cls.no_variant_attribute.value_ids
cls.dynamic_attribute = cls.env['product.attribute'].create({
'name': 'Dynamic',
'create_variant': 'dynamic',
'value_ids': [
Command.create({'name': 'dyn1'}),
Command.create({'name': 'dyn2'}),
]
})
cls.product_template_sofa = cls.env['product.template'].create({
'name': 'Sofa',
'uom_id': cls.uom_unit.id,
'categ_id': cls.product_category.id,
'attribute_line_ids': [Command.create({
'attribute_id': cls.color_attribute.id,
'value_ids': [Command.set([
cls.color_attribute_red.id,
cls.color_attribute_blue.id,
cls.color_attribute_green.id
])],
})]
})
cls.product_sofa_red = cls.product_template_sofa.product_variant_ids.filtered(
lambda pp:
pp.product_template_attribute_value_ids.product_attribute_value_id
==
cls.color_attribute_red
)
cls.product_sofa_blue = cls.product_template_sofa.product_variant_ids.filtered(
lambda pp:
pp.product_template_attribute_value_ids.product_attribute_value_id
==
cls.color_attribute_blue
)
cls.product_sofa_green = cls.product_template_sofa.product_variant_ids.filtered(
lambda pp:
pp.product_template_attribute_value_ids.product_attribute_value_id
==
cls.color_attribute_green
)