Devishree Brahmbhatt (OpenERP) has proposed merging
lp:~openerp-dev/openobject-addons/trunk-coverage-procurement-dbr into
lp:openobject-addons.
Requested reviews:
OpenERP Core Team (openerp)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-coverage-procurement-dbr/+merge/85823
Hello,
Improve the test cases for procurement module.
Done the changes as follows:
=> Add new test folder
=> Add two files
-> Procurement.yml
- Define the normal process flow of procurement module.
-> all_schedular.yml
- Define the process flow of wizard.
=> Commented a class 'StockPicking' from procurement.py.
So, kindly review it.
Thanks.
--
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-coverage-procurement-dbr/+merge/85823
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-addons/trunk-coverage-procurement-dbr.
=== modified file 'procurement/__openerp__.py'
--- procurement/__openerp__.py 2011-12-12 14:22:44 +0000
+++ procurement/__openerp__.py 2011-12-15 10:11:28 +0000
@@ -59,6 +59,9 @@
'board_mrp_procurement_view.xml',
],
'demo_xml': ['stock_orderpoint.xml'],
+ 'test': ['test/procurement.yml',
+ #'test/all_schedular.yml'
+ ],
'installable': True,
'active': False,
'certificate': '00954248826881074509',
=== modified file 'procurement/procurement.py'
--- procurement/procurement.py 2011-12-07 14:58:54 +0000
+++ procurement/procurement.py 2011-12-15 10:11:28 +0000
@@ -61,20 +61,6 @@
}
mrp_property()
-class StockMove(osv.osv):
- _inherit = 'stock.move'
-
- _columns= {
- 'procurements': fields.one2many('procurement.order', 'move_id', 'Procurements'),
- }
-
- def copy(self, cr, uid, id, default=None, context=None):
- default = default or {}
- default['procurements'] = []
- return super(StockMove, self).copy(cr, uid, id, default, context=context)
-
-StockMove()
-
class procurement_order(osv.osv):
"""
Procurement Orders
@@ -471,22 +457,21 @@
return res
procurement_order()
-
-class StockPicking(osv.osv):
- _inherit = 'stock.picking'
-
- def test_finished(self, cursor, user, ids):
- wf_service = netsvc.LocalService("workflow")
- res = super(StockPicking, self).test_finished(cursor, user, ids)
- for picking in self.browse(cursor, user, ids):
- for move in picking.move_lines:
- if move.state == 'done' and move.procurements:
- for procurement in move.procurements:
- wf_service.trg_validate(user, 'procurement.order',
- procurement.id, 'button_check', cursor)
- return res
-
-StockPicking()
+# Dead Code
+# =========
+#class StockPicking(osv.osv):
+# _inherit = 'stock.picking'
+# def test_finished(self, cursor, user, ids):
+# wf_service = netsvc.LocalService("workflow")
+# res = super(StockPicking, self).test_finished(cursor, user, ids)
+# for picking in self.browse(cursor, user, ids):
+# for move in picking.move_lines:
+# if move.state == 'done':
+# for procurement in move.procurements:
+# wf_service.trg_validate(user, 'procurement.order',
+# procurement.id, 'button_check', cursor)
+# return res
+#StockPicking()
class stock_warehouse_orderpoint(osv.osv):
"""
=== added directory 'procurement/test'
=== added file 'procurement/test/all_schedular.yml'
--- procurement/test/all_schedular.yml 1970-01-01 00:00:00 +0000
+++ procurement/test/all_schedular.yml 2011-12-15 10:11:28 +0000
@@ -0,0 +1,53 @@
+-
+ For test the procurement module, First I have to update quantity.
+-
+ !python {model: product.product}: |
+ product = self.browse(cr, uid, ref('product.product_product_pc2'))
+ assert product.virtual_available >= 0.0,'Virtual stock have more quantities than zero.'
+-
+ I create minimum stock rule for product PC2.
+-
+ !record {model: stock.warehouse.orderpoint, id: stock_warehouse_orderpoint_op0}:
+ company_id: base.main_company
+ location_id: stock.stock_location_stock
+ logic: max
+ name: OP/000008
+ product_id: product.product_product_pc2
+ product_max_qty: 15.0
+ product_min_qty: 1.0
+ product_uom: product.product_uom_kgm
+ qty_multiple: 1
+ warehouse_id: stock.warehouse0
+-
+ I run the scheduler.
+-
+ !python {model: product.product}: |
+ mk_procure = self.pool.get('make.procurement')
+ procur_order = self.pool.get('procurement.order')
+ product = self.browse(cr, uid, ref('product.product_product_pc2'))
+
+ context.update({'active_model': 'product.product','active_id':ref('product.product_product_pc2')})
+ values = mk_procure.default_get(cr, uid, ['qty','product_id','uom_id','warehouse_id','date_planned'], context)
+ values.update({'warehouse_id': ref('base.main_company'),'uom_id': ref('product.product_uom_unit'),'qty': 1})
+ ids = mk_procure.create(cr, uid, values, context)
+ procurement = mk_procure.make_procurement(cr, uid, [ids], context)
+
+ assert product.virtual_available >= 1.0,'Virtual stock should be updated'
+
+ proc_id = procurement.get('res_id')
+ procurements = procur_order.browse(cr, uid, [proc_id])[0]
+ assert procurements.product_id.id == ref('product.product_product_pc2'),"Product is not correspond."
+ assert procurements.product_qty >= 1,"Product Quantity is not correspond."
+ assert procurements.state == 'confirmed',"Procurement state should be 'Confirmed'."
+ assert procurements.product_uom.id == ref('product.product_uom_unit'),"Product's UOM is not correspond."
+ context.update({'proc': proc_id})
+-
+ I Compute Minimum Stock.
+-
+ !python {model: procurement.orderpoint.compute}: |
+ proc_id = context.get('proc')
+ context.update({'active_model':'procurement.order','active_id':proc_id})
+ values = self.default_get(cr, uid, ['automatic'], context)
+ values.update({'automatic':True})
+ ids = self.create(cr, uid, values, context)
+ self.procure_calculation(cr, uid, [ids], context)
=== added file 'procurement/test/procurement.yml'
--- procurement/test/procurement.yml 1970-01-01 00:00:00 +0000
+++ procurement/test/procurement.yml 2011-12-15 10:11:28 +0000
@@ -0,0 +1,94 @@
+-
+ For test the procurement module, First I have to check current product quantity.
+-
+ !python {model: product.product}: |
+ product = self.browse(cr, uid, ref('product.product_product_cpu2'))
+ assert product.virtual_available <= 0.0,'Virtual stock have more quantities. so, not possible to check minimum stock rule process'
+-
+ I create minimum stock rule for product CPU2.
+-
+ !record {model: stock.warehouse.orderpoint, id: stock_warehouse_orderpoint_op0}:
+ company_id: base.main_company
+ location_id: stock.stock_location_stock
+ logic: max
+ name: OP/00008
+ product_id: product.product_product_cpu2
+ product_max_qty: 15.0
+ product_min_qty: 5.0
+ product_uom: product.product_uom_kgm
+ qty_multiple: 1
+ warehouse_id: stock.warehouse0
+-
+ I update product quantity and check the stock moves are properly done or not.
+-
+ !python {model: product.product}: |
+ change_qty = self.pool.get('stock.change.product.qty')
+ product = self.browse(cr, uid, ref('product.product_product_cpu2'))
+ ids = change_qty.create(cr, uid, {'location_id' : ref('stock.stock_location_stock'), 'new_quantity': 4, 'product_id': product.id})
+ change_qty.change_product_qty(cr, uid, [ids], {'active_model':'product.product', 'active_id': product.id, 'active_ids':[product.id]})
+ assert product.qty_available == 4,"Product quantity is not updated."
+-
+ I run the scheduler.
+-
+ !python {model: procurement.order}: |
+ self.run_scheduler(cr, uid)
+-
+ I check that procurement order created.
+-
+ !python {model: procurement.order}: |
+ proc_ids = self.search(cr, uid, [('product_id','=', ref('product.product_product_cpu2'))])
+ assert proc_ids, 'No Procurement created.'
+ proc_order = self.browse(cr, uid, proc_ids)[0]
+ assert proc_order.product_qty == 11.0,"Procurement product quantity is not corresponded."
+-
+ I check product quantity.
+-
+ !python {model: product.product}: |
+ product = self.browse(cr, uid, ref('product.product_product_cpu2'))
+ assert product.virtual_available == 15.0,"After run the scheduler product's virtual stock is not updated."
+-
+ For test the Procurement Request wizard, Again I have to update product quantity.
+-
+ !python {model: product.product}: |
+ mk_procure = self.pool.get('make.procurement')
+ procur_order = self.pool.get('procurement.order')
+ product = self.browse(cr, uid, ref('product.product_product_cpu2'))
+
+ context.update({'active_model': 'product.product','active_id':ref('product.product_product_cpu2')})
+ values = mk_procure.default_get(cr, uid, ['qty','product_id','uom_id','warehouse_id','date_planned'], context)
+ values.update({'warehouse_id': ref('base.main_company'),'uom_id': ref('product.product_uom_unit'),'qty': 5})
+
+ ids = mk_procure.create(cr, uid, values, context)
+ procurement = mk_procure.make_procurement(cr, uid, [ids], context)
+ assert product.virtual_available == 20.0,'Virtual stock should be updated'
+
+ proc_id = procurement.get('res_id')
+ for procurement in procur_order.browse(cr, uid, [proc_id]):
+ if procurement.state == 'confirmed':
+ assert procurement.state == 'confirmed',"Procurement state should be 'Confirmed'."
+ assert procurement.product_id.id == ref('product.product_product_cpu2'),"Product is not correspond."
+ assert procurement.product_qty == 5,"Product Quantity is not correspond."
+ assert procurement.product_uom.id == ref('product.product_uom_unit'),"Product's UOM is not correspond."
+ context.update({'proc': proc_id})
+-
+ I run the scheduler.
+-
+ !python {model: procurement.order}: |
+ self.run_scheduler(cr, uid)
+-
+ I check the current state of procurement.
+-
+ !python {model: procurement.order}: |
+ proc_id = context.get('proc')
+ proc = self.browse(cr, uid, [proc_id])[0]
+ assert proc.state == 'ready' or 'exception',"Procurement should be in Ready or Exception state"
+-
+ I compute minimum stock .
+-
+ !python {model: procurement.orderpoint.compute}: |
+ proc_id = context.get('proc')
+ context.update({'active_model':'procurement.order','active_id':proc_id, 'automatic':True})
+ values = self.default_get(cr, uid, ['automatic'], context)
+ ids = self.create(cr, uid, values, context)
+ self.procure_calculation(cr, uid, [ids], context)
+
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp