86 lines
2.3 KiB
ReStructuredText
86 lines
2.3 KiB
ReStructuredText
========================
|
|
Product Replace Scenario
|
|
========================
|
|
|
|
Imports::
|
|
|
|
>>> from proteus import Model, Wizard
|
|
>>> from trytond.tests.tools import activate_modules, assertEqual, assertFalse
|
|
|
|
Activate modules::
|
|
|
|
>>> config = activate_modules('product')
|
|
|
|
>>> Cron = Model.get('ir.cron')
|
|
>>> ProductTemplate = Model.get('product.template')
|
|
>>> UoM = Model.get('product.uom')
|
|
|
|
Get units::
|
|
|
|
>>> unit, = UoM.find([('name', '=', "Unit")])
|
|
>>> kg, = UoM.find([('name', '=', "Kilogram")])
|
|
|
|
Create a product::
|
|
|
|
>>> template = ProductTemplate()
|
|
>>> template.name = "Product"
|
|
>>> template.type = 'goods'
|
|
>>> template.default_uom = kg
|
|
>>> template.save()
|
|
>>> product1, = template.products
|
|
|
|
Create a second product::
|
|
|
|
>>> template = ProductTemplate()
|
|
>>> template.name = "Product"
|
|
>>> template.type = 'service'
|
|
>>> template.default_uom = unit
|
|
>>> template.save()
|
|
>>> product2, = template.products
|
|
|
|
Try to replace goods with service::
|
|
|
|
>>> replace = Wizard('product.product.replace', models=[product1])
|
|
>>> assertEqual(replace.form.source, product1)
|
|
>>> replace.form.destination = product2
|
|
>>> replace.execute('replace')
|
|
Traceback (most recent call last):
|
|
...
|
|
DomainValidationError: ...
|
|
|
|
Try to replace with different categories of unit of measure::
|
|
|
|
>>> product2.template.type = 'goods'
|
|
>>> product2.template.save()
|
|
|
|
>>> replace = Wizard('product.product.replace', models=[product1])
|
|
>>> replace.form.destination = product2
|
|
>>> replace.execute('replace')
|
|
Traceback (most recent call last):
|
|
...
|
|
DomainValidationError: ...
|
|
|
|
Replace product::
|
|
|
|
>>> product2.template.default_uom = kg
|
|
>>> product2.template.save()
|
|
|
|
>>> replace = Wizard('product.product.replace', models=[product1])
|
|
>>> replace.form.destination = product2
|
|
>>> replace.execute('replace')
|
|
>>> assertEqual(product1.replaced_by, product2)
|
|
>>> assertFalse(product1.active)
|
|
|
|
Cron task deactivate replaced product::
|
|
|
|
>>> product1.active = True
|
|
>>> product1.save()
|
|
|
|
>>> deactivate_replaced, = Cron.find([
|
|
... ('method', '=', 'product.product|deactivate_replaced'),
|
|
... ])
|
|
>>> deactivate_replaced.click('run_once')
|
|
|
|
>>> product1.reload()
|
|
>>> assertFalse(product1.active)
|