Files
stock-logistics-warehouse/procurement_auto_create_group/tests/test_auto_create.py
2021-06-11 09:16:46 +02:00

109 lines
4.0 KiB
Python

# Copyright 2017-2020 ForgeFlow, S.L.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo.tests.common import TransactionCase
class TestProcurementAutoCreateGroup(TransactionCase):
def setUp(self):
super(TestProcurementAutoCreateGroup, self).setUp()
self.group_obj = self.env["procurement.group"]
self.rule_obj = self.env["stock.rule"]
self.route_obj = self.env["stock.location.route"]
self.move_obj = self.env["stock.move"]
self.product_obj = self.env["product.product"]
self.warehouse = self.env.ref("stock.warehouse0")
self.location = self.env.ref("stock.stock_location_stock")
loc_components = self.env.ref("stock.stock_location_components")
picking_type_id = self.env.ref("stock.picking_type_internal").id
# Create rules and routes:
route_auto = self.route_obj.create({"name": "Auto Create Group"})
self.rule_1 = self.rule_obj.create(
{
"name": "rule with autocreate",
"route_id": route_auto.id,
"auto_create_group": True,
"action": "pull_push",
"warehouse_id": self.warehouse.id,
"picking_type_id": picking_type_id,
"location_id": self.location.id,
"location_src_id": loc_components.id,
}
)
route_no_auto = self.route_obj.create({"name": "Not Auto Create Group"})
self.rule_obj.create(
{
"name": "rule with no autocreate",
"route_id": route_no_auto.id,
"auto_create_group": False,
"action": "pull_push",
"warehouse_id": self.warehouse.id,
"picking_type_id": picking_type_id,
"location_id": self.location.id,
"location_src_id": loc_components.id,
}
)
# Prepare products:
self.prod_auto = self.product_obj.create(
{
"name": "Test Product 1",
"type": "product",
"route_ids": [(6, 0, [route_auto.id])],
}
)
self.prod_no_auto = self.product_obj.create(
{
"name": "Test Product 2",
"type": "product",
"route_ids": [(6, 0, [route_no_auto.id])],
}
)
def _procure(self, product):
values = {}
self.group_obj.run(
[
self.env["procurement.group"].Procurement(
product,
5.0,
product.uom_id,
self.location,
"TEST",
"odoo tests",
self.env.company,
values,
)
]
)
return True
def test_01_no_auto_create_group(self):
"""Test auto creation of group."""
move = self.move_obj.search([("product_id", "=", self.prod_no_auto.id)])
self.assertFalse(move)
self._procure(self.prod_no_auto)
move = self.move_obj.search([("product_id", "=", self.prod_no_auto.id)])
self.assertTrue(move)
self.assertFalse(
move.group_id, "Procurement Group should not have been assigned."
)
def test_02_auto_create_group(self):
move = self.move_obj.search([("product_id", "=", self.prod_auto.id)])
self.assertFalse(move)
self._procure(self.prod_auto)
move = self.move_obj.search([("product_id", "=", self.prod_auto.id)])
self.assertTrue(move)
self.assertTrue(move.group_id, "Procurement Group not assigned.")
def test_03_onchange_method(self):
"""Test onchange method for stock rule."""
proc_rule = self.rule_1
self.assertTrue(proc_rule.auto_create_group)
proc_rule.write({"group_propagation_option": "none"})
proc_rule._onchange_group_propagation_option()
self.assertFalse(proc_rule.auto_create_group)