Files
Odoo-18.0-20251222/maintenance_stock/tests/test_maintenance_stock.py
tocmo0nlord adbe430761
Some checks failed
pre-commit / pre-commit (push) Has been cancelled
tests / Detect unreleased dependencies (push) Has been cancelled
tests / test with OCB (push) Has been cancelled
tests / test with Odoo (push) Has been cancelled
Initial commit: Odoo 18.0-20251222 extra-addons
2026-03-13 20:43:25 +00:00

157 lines
6.4 KiB
Python

# © 2020 Solvos Consultoría Informática (<http://www.solvos.es>)
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
from odoo.tests import Form, common
class TestMaintenanceStock(common.TransactionCase):
def setUp(self):
super().setUp()
self.maintenance_warehouse = self.env["stock.warehouse"].create(
{
"name": "Test warehouse",
"code": "TEST",
}
)
self.product1 = self.env["product.product"].create(
{
"default_code": "TESTOPROD",
"name": "Test prod",
"type": "consu",
"uom_id": self.env.ref("uom.product_uom_unit").id,
"uom_po_id": self.env.ref("uom.product_uom_unit").id,
"is_storable": True,
}
)
self.equipment_1 = self.env["maintenance.equipment"].create(
{
"name": "Test equipment",
"allow_consumptions": True,
"default_consumption_warehouse_id": self.maintenance_warehouse.id,
}
)
self.request_1 = self.env["maintenance.request"].create(
{
"name": "Test request",
"user_id": self.env.ref("base.user_demo").id,
"owner_user_id": self.env.ref("base.user_admin").id,
"equipment_id": self.equipment_1.id,
"stage_id": self.env.ref("maintenance.stage_1").id,
"maintenance_team_id": self.env.ref(
"maintenance.equipment_team_maintenance"
).id,
}
)
def test_warehouse(self):
self.assertTrue(self.maintenance_warehouse.wh_cons_loc_id)
self.assertTrue(self.maintenance_warehouse.cons_type_id)
self.assertEqual(self.maintenance_warehouse.cons_type_id.code, "outgoing")
self.assertEqual(
self.maintenance_warehouse.cons_type_id.default_location_src_id,
self.maintenance_warehouse.lot_stock_id,
)
self.assertEqual(
self.maintenance_warehouse.cons_type_id.default_location_dest_id,
self.maintenance_warehouse.wh_cons_loc_id,
)
self.assertEqual(
self.maintenance_warehouse.cons_type_id.barcode,
self.maintenance_warehouse.code.replace(" ", "").upper() + "-CONS",
)
self.assertEqual(
self.maintenance_warehouse.cons_type_id.sequence_id.prefix,
self.maintenance_warehouse.code + "/CONS/",
)
self.assertEqual(
self.maintenance_warehouse.cons_type_id.return_picking_type_id,
self.maintenance_warehouse.in_type_id,
)
def test_equipment(self):
self.assertTrue(self.equipment_1.default_consumption_warehouse_id)
self.equipment_1.allow_consumptions = False
self.equipment_1._onchange_allow_consumptions()
self.assertFalse(self.equipment_1.default_consumption_warehouse_id)
action1 = self.equipment_1.action_view_stock_picking_ids()
self.assertEqual(action1["domain"][0][2], self.equipment_1.id)
self.assertTrue(action1["context"]["show_maintenance_request_id"])
action2 = self.equipment_1.action_view_stock_move_ids()
self.assertEqual(action2["domain"][0][2], self.equipment_1.id)
action3 = self.equipment_1.action_view_stock_move_line_ids()
self.assertEqual(action3["domain"][0][2], self.equipment_1.id)
self.assertFalse(action3["context"]["search_default_groupby_location_dest_id"])
def test_request(self):
action1 = self.request_1.action_view_stock_picking_ids()
self.assertEqual(action1["domain"][0][2], self.request_1.id)
self.assertEqual(
action1["context"]["default_picking_type_id"],
self.request_1.default_consumption_warehouse_id.cons_type_id.id,
)
self.assertEqual(
action1["context"]["default_maintenance_request_id"], self.request_1.id
)
action2 = self.request_1.action_view_stock_move_ids()
self.assertEqual(action2["domain"][0][2], self.request_1.id)
action3 = self.request_1.action_view_stock_move_line_ids()
self.assertEqual(action3["domain"][0][2], self.request_1.id)
self.assertFalse(action3["context"]["search_default_groupby_location_dest_id"])
def test_picking(self):
self.assertEqual(len(self.request_1.stock_picking_ids), 0)
location_id = self.maintenance_warehouse.lot_stock_id
picking_type_id = self.maintenance_warehouse.cons_type_id
self.env["stock.quant"].create(
{
"product_id": self.product1.id,
"location_id": location_id.id,
"quantity": 5,
}
)
picking_form = Form(self.env["stock.picking"])
picking_form.picking_type_id = picking_type_id
picking_form.location_id = location_id
with picking_form.move_ids_without_package.new() as move:
move.product_id = self.product1
move.product_uom_qty = 5.0
picking = picking_form.save()
picking.write({"maintenance_request_id": self.request_1.id})
self.assertEqual(len(self.request_1.stock_picking_ids), 1)
stock_quant_obj = self.env["stock.quant"]
domain_from = [
("product_id", "=", self.product1.id),
("location_id", "=", self.maintenance_warehouse.lot_stock_id.id),
]
domain_to = [
("product_id", "=", self.product1.id),
("location_id", "=", self.maintenance_warehouse.wh_cons_loc_id.id),
]
self.assertEqual(stock_quant_obj.search(domain_from).quantity, 5)
self.assertEqual(stock_quant_obj.search(domain_to).quantity, 0)
picking.action_confirm()
picking.action_assign()
picking.move_line_ids.write({"quantity": 5.0, "picked": True})
picking.button_validate()
self.assertEqual(stock_quant_obj.search(domain_from).quantity, 0)
self.assertEqual(stock_quant_obj.search(domain_to).quantity, 5)
def test_update_name_and_code(self):
"""Test that _update_name_and_code updates the sequence prefix only."""
new_code = "UPDT"
self.maintenance_warehouse.code = new_code
self.maintenance_warehouse._update_name_and_code()
expected_prefix = new_code + "/CONS/"
self.assertEqual(
self.maintenance_warehouse.cons_type_id.sequence_id.prefix,
expected_prefix,
)