first commit
This commit is contained in:
85
modules/product/tests/scenario_product_replace.rst
Normal file
85
modules/product/tests/scenario_product_replace.rst
Normal file
@@ -0,0 +1,85 @@
|
||||
========================
|
||||
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)
|
||||
Reference in New Issue
Block a user