diff --git a/addons/purchase_requisition/tests/common.py b/addons/purchase_requisition/tests/common.py index 865216d45a4..7ae6e1781d8 100644 --- a/addons/purchase_requisition/tests/common.py +++ b/addons/purchase_requisition/tests/common.py @@ -3,27 +3,66 @@ from odoo.tests import common -class TestPurchaseRequisitionCommon(common.TransactionCase): +class TestPurchaseRequisitionCommon(common.SavepointCase): - def setUp(self): - super(TestPurchaseRequisitionCommon, self).setUp() + @classmethod + def setUpClass(cls): + super(TestPurchaseRequisitionCommon, cls).setUpClass() - self.product_09_id = self.ref('product.product_product_9') - self.product_09_uom_id = self.ref('uom.product_uom_unit') - self.product_13_id = self.ref('product.product_product_13') - self.res_partner_1_id = self.ref('base.res_partner_1') - self.res_company_id = self.ref('base.main_company') - self.env.user.company_id.currency_id = self.env.ref("base.USD").id + # Fetch purchase related user groups + user_group_purchase_manager = cls.env.ref('purchase.group_purchase_manager') + user_group_purchase_user = cls.env.ref('purchase.group_purchase_user') - self.ResUser = self.env['res.users'] - # Create a user as 'Purchase Requisition Manager' - self.res_users_purchase_requisition_manager = self.ResUser.create({'company_id': self.res_company_id, 'name': 'Purchase requisition Manager', 'login': 'prm', 'email': 'requisition_manager@yourcompany.com'}) - # Added groups for Purchase Requisition Manager. - self.res_users_purchase_requisition_manager.group_id = self.ref('purchase.group_purchase_manager') - # Create a user as 'Purchase Requisition User' - self.res_users_purchase_requisition_user = self.ResUser.create({'company_id': self.res_company_id, 'name': 'Purchase requisition User', 'login': 'pru', 'email': 'requisition_user@yourcompany.com'}) - # Added groups for Purchase Requisition User. - self.res_users_purchase_requisition_user.group_id = self.ref('purchase.group_purchase_user') + # User Data: purchase requisition Manager and User + Users = cls.env['res.users'].with_context({'tracking_disable': True}) + + cls.user_purchase_requisition_manager = Users.create({ + 'name': 'Purchase requisition Manager', + 'login': 'prm', + 'email': 'requisition_manager@yourcompany.com', + 'notification_type': 'inbox', + 'groups_id': [(6, 0, [user_group_purchase_manager.id])]}) + + cls.user_purchase_requisition_user = Users.create({ + 'name': 'Purchase requisition User', + 'login': 'pru', + 'email': 'requisition_user@yourcompany.com', + 'notification_type': 'inbox', + 'groups_id': [(6, 0, [user_group_purchase_user.id])]}) + + # Create Product + cls.product_uom_id = cls.env.ref('uom.product_uom_unit') + + cls.product_09 = cls.env['product.product'].create({ + 'name': 'Pedal Bin', + 'categ_id': cls.env.ref('product.product_category_5').id, + 'standard_price': 10.0, + 'list_price': 47.0, + 'type': 'consu', + 'uom_id': cls.product_uom_id.id, + 'uom_po_id': cls.product_uom_id.id, + 'default_code': 'E-COM10', + }) + + cls.product_13 = cls.env['product.product'].create({ + 'name': 'Corner Desk Black', + 'categ_id': cls.env.ref('product.product_category_5').id, + 'standard_price': 78.0, + 'list_price': 85.0, + 'type': 'consu', + 'uom_id': cls.product_uom_id.id, + 'uom_po_id': cls.product_uom_id.id, + 'default_code': 'FURN_1118', + 'purchase_requisition': 'tenders', + }) # In order to test process of the purchase requisition ,create requisition - self.requisition1 = self.env['purchase.requisition'].create({'line_ids': [(0, 0, {'product_id': self.product_09_id, 'product_qty': 10.0, 'product_uom_id': self.product_09_uom_id})]}) + cls.requisition1 = cls.env['purchase.requisition'].create({ + 'line_ids': [(0, 0, { + 'product_id': cls.product_09.id, + 'product_qty': 10.0, + 'product_uom_id': cls.product_uom_id.id})] + }) + + cls.res_partner_1 = cls.env.ref('base.res_partner_1') + cls.env.user.company_id.currency_id = cls.env.ref("base.USD").id diff --git a/addons/purchase_requisition/tests/test_purchase_requisition.py b/addons/purchase_requisition/tests/test_purchase_requisition.py index 324d013f60f..b19aa8b1296 100644 --- a/addons/purchase_requisition/tests/test_purchase_requisition.py +++ b/addons/purchase_requisition/tests/test_purchase_requisition.py @@ -7,28 +7,27 @@ from odoo.addons.purchase_requisition.tests.common import TestPurchaseRequisitio class TestPurchaseRequisition(TestPurchaseRequisitionCommon): def test_00_purchase_requisition_users(self): - self.assertTrue(self.res_users_purchase_requisition_manager, 'Manager Should be created') - self.assertTrue(self.res_users_purchase_requisition_user, 'User Should be created') + self.assertTrue(self.user_purchase_requisition_manager, 'Manager Should be created') + self.assertTrue(self.user_purchase_requisition_user, 'User Should be created') def test_01_cancel_purchase_requisition(self): - self.requisition1.sudo(self.res_users_purchase_requisition_user.id).action_cancel() + self.requisition1.sudo(self.user_purchase_requisition_user.id).action_cancel() # Check requisition after cancelled. self.assertEqual(self.requisition1.state, 'cancel', 'Requisition should be in cancelled state.') # I reset requisition as "New". - self.requisition1.sudo(self.res_users_purchase_requisition_user.id).action_draft() + self.requisition1.sudo(self.user_purchase_requisition_user.id).action_draft() # I duplicate requisition. - self.requisition1.sudo(self.res_users_purchase_requisition_user.id).copy() + self.requisition1.sudo(self.user_purchase_requisition_user.id).copy() def test_02_purchase_requisition(self): price_product09 = 34 price_product13 = 62 quantity = 26 - # Create a pruchase requisition with type blanket order and two product - line1 = (0, 0, {'product_id': self.product_09_id, 'product_qty': quantity, 'product_uom_id': self.product_09_uom_id, 'price_unit': price_product09}) - self.product_13_uom_id = self.ref('uom.product_uom_unit') - line2 = (0, 0, {'product_id': self.product_13_id, 'product_qty': quantity, 'product_uom_id': self.product_13_uom_id, 'price_unit': price_product13}) + # Create a pruchase requisition with type blanket order and two product + line1 = (0, 0, {'product_id': self.product_09.id, 'product_qty': quantity, 'product_uom_id': self.product_uom_id.id, 'price_unit': price_product09}) + line2 = (0, 0, {'product_id': self.product_13.id, 'product_qty': quantity, 'product_uom_id': self.product_uom_id.id, 'price_unit': price_product13}) requisition_type = self.env['purchase.requisition.type'].create({ 'name': 'Blanket test', @@ -37,7 +36,7 @@ class TestPurchaseRequisition(TestPurchaseRequisitionCommon): requisition_blanket = self.env['purchase.requisition'].create({ 'line_ids': [line1, line2], 'type_id': requisition_type.id, - 'vendor_id': self.res_partner_1_id + 'vendor_id': self.res_partner_1.id, }) # confirm the requisition @@ -45,10 +44,10 @@ class TestPurchaseRequisition(TestPurchaseRequisitionCommon): # Check for both product that the new supplier info(purchase.requisition.vendor_id) is added to the puchase tab # and check the quantity - seller_partner1 = self.env['res.partner'].browse(self.res_partner_1_id) + seller_partner1 = self.res_partner_1 supplierinfo09 = self.env['product.supplierinfo'].search([ ('name', '=', seller_partner1.id), - ('product_id', '=', self.product_09_id), + ('product_id', '=', self.product_09.id), ('purchase_requisition_id', '=', requisition_blanket.id), ]) self.assertEqual(supplierinfo09.name, seller_partner1, 'The supplierinfo is not the good one') @@ -56,7 +55,7 @@ class TestPurchaseRequisition(TestPurchaseRequisitionCommon): supplierinfo13 = self.env['product.supplierinfo'].search([ ('name', '=', seller_partner1.id), - ('product_id', '=', self.product_13_id), + ('product_id', '=', self.product_13.id), ('purchase_requisition_id', '=', requisition_blanket.id), ]) self.assertEqual(supplierinfo13.name, seller_partner1, 'The supplierinfo is not the good one') diff --git a/addons/purchase_requisition_stock/tests/test_purchase_requisition_stock.py b/addons/purchase_requisition_stock/tests/test_purchase_requisition_stock.py index 2e395357592..1e1f93f4824 100644 --- a/addons/purchase_requisition_stock/tests/test_purchase_requisition_stock.py +++ b/addons/purchase_requisition_stock/tests/test_purchase_requisition_stock.py @@ -12,16 +12,13 @@ class TestPurchaseRequisitionStock(TestPurchaseRequisitionCommon): def test_01_purchase_requisition_stock(self): date_planned = fields.Datetime.now() warehouse = self.env['stock.warehouse'].browse(self.ref('stock.warehouse0')) - product = self.env['product.product'].browse(self.product_13_id) - product.write({'route_ids': [(4, self.ref('purchase_stock.route_warehouse0_buy'))]}) - self.env['procurement.group'].run(product, 14, self.env['uom.uom'].browse(self.ref('uom.product_uom_unit')), warehouse.lot_stock_id, '/', '/', + self.env['procurement.group'].run(self.product_13, 14, self.env['uom.uom'].browse(self.ref('uom.product_uom_unit')), warehouse.lot_stock_id, '/', '/', { 'warehouse_id': warehouse, 'date_planned': date_planned, }) - # Check requisition details which created after run procurement. - line = self.env['purchase.requisition.line'].search([('product_id', '=', self.product_13_id), ('product_qty', '=', 14.0)]) + line = self.env['purchase.requisition.line'].search([('product_id', '=', self.product_13.id), ('product_qty', '=', 14.0)]) requisition = line[0].requisition_id self.assertEqual(requisition.date_end, date_planned, "End date does not correspond.") self.assertEqual(len(requisition.line_ids), 1, "Requisition Lines should be one.") @@ -29,12 +26,12 @@ class TestPurchaseRequisitionStock(TestPurchaseRequisitionCommon): # Give access rights of Purchase Requisition User to open requisition # Set tender state to choose tendering line. - self.requisition1.sudo(self.res_users_purchase_requisition_user.id).action_in_progress() - self.requisition1.sudo(self.res_users_purchase_requisition_user.id).action_open() + self.requisition1.sudo(self.user_purchase_requisition_user.id).action_in_progress() + self.requisition1.sudo(self.user_purchase_requisition_user.id).action_open() # Vendor send one RFQ so I create a RfQ of that agreement. PurchaseOrder = self.env['purchase.order'] - purchase_order = PurchaseOrder.new({'partner_id': self.res_partner_1_id, 'requisition_id': self.requisition1.id}) + purchase_order = PurchaseOrder.new({'partner_id': self.res_partner_1, 'requisition_id': self.requisition1.id}) purchase_order._onchange_requisition_id() po_dict = purchase_order._convert_to_write({name: purchase_order[name] for name in purchase_order._cache}) self.po_requisition = PurchaseOrder.create(po_dict)