|
| 1 | +from odoo.tests import Form, TransactionCase, tagged |
| 2 | + |
| 3 | + |
| 4 | +@tagged("post_install", "-at_install") |
| 5 | +class TestModuleFlow(TransactionCase): |
| 6 | + @classmethod |
| 7 | + def setUpClass(cls): |
| 8 | + super().setUpClass() |
| 9 | + cls.local_delivery = cls.env.ref( |
| 10 | + "delivery.delivery_local_delivery", raise_if_not_found=False |
| 11 | + ) |
| 12 | + cls.poste_delivery = cls.env.ref( |
| 13 | + "delivery.delivery_carrier", raise_if_not_found=False |
| 14 | + ) |
| 15 | + cls.warehouse0 = cls.env["stock.warehouse"].create( |
| 16 | + { |
| 17 | + "name": "Test Warehouse #1", |
| 18 | + "code": "TWH-1", |
| 19 | + } |
| 20 | + ) |
| 21 | + cls.warehouse1 = cls.env["stock.warehouse"].create( |
| 22 | + { |
| 23 | + "name": "Test Warehouse #2", |
| 24 | + "code": "TWH-2", |
| 25 | + } |
| 26 | + ) |
| 27 | + cls.local_delivery.write({"so_warehouse_id": cls.warehouse0.id}) |
| 28 | + cls.poste_delivery.write({"so_warehouse_id": cls.warehouse1.id}) |
| 29 | + cls.saleperson_warehouse = cls.env.user._get_default_warehouse_id() |
| 30 | + |
| 31 | + form = Form( |
| 32 | + cls.env["sale.order"], |
| 33 | + ) |
| 34 | + form.partner_id = cls.env.ref("base.res_partner_2", raise_if_not_found=False) |
| 35 | + with form.order_line.new() as line: |
| 36 | + line.product_id = cls.env.ref( |
| 37 | + "product.product_product_25", raise_if_not_found=False |
| 38 | + ) |
| 39 | + cls.sale_order = form.save() |
| 40 | + |
| 41 | + def _set_shipping_method(self, delivery_method): |
| 42 | + form = Form( |
| 43 | + self.env["choose.delivery.carrier"].with_context( |
| 44 | + default_order_id=self.sale_order.id, |
| 45 | + ), |
| 46 | + view="delivery.choose_delivery_carrier_view_form", |
| 47 | + ) |
| 48 | + form.carrier_id = delivery_method |
| 49 | + shipping = form.save() |
| 50 | + shipping.button_confirm() |
| 51 | + |
| 52 | + def test_sale_order_warehouse_default(self): |
| 53 | + """Test flow when set order warehouse by default""" |
| 54 | + self.assertEqual( |
| 55 | + self.saleperson_warehouse, |
| 56 | + self.sale_order.warehouse_id, |
| 57 | + msg="Order Warehouse must be equal to saleperson default warehouse", |
| 58 | + ) |
| 59 | + |
| 60 | + def test_sale_order_warehouse_custom(self): |
| 61 | + """Test flow when set order warehouse by 'Shipping Method' record""" |
| 62 | + self._set_shipping_method(self.local_delivery) |
| 63 | + self.assertEqual( |
| 64 | + self.warehouse0, |
| 65 | + self.sale_order.warehouse_id, |
| 66 | + msg="Order Warehouse must be equal to 'Test Warehouse #1'", |
| 67 | + ) |
| 68 | + |
| 69 | + def test_sale_order_carrier_id_confirmation(self): |
| 70 | + """Test flow when change 'Shipping Method' after confirmation""" |
| 71 | + self._set_shipping_method(self.local_delivery) |
| 72 | + self.assertEqual( |
| 73 | + self.sale_order.warehouse_id.id, |
| 74 | + self.warehouse0.id, |
| 75 | + msg="Order Warehouse must be equal to 'Test Warehouse #1'", |
| 76 | + ) |
| 77 | + self.sale_order.action_confirm() |
| 78 | + self._set_shipping_method(self.poste_delivery) |
| 79 | + self.assertNotEqual( |
| 80 | + self.sale_order.warehouse_id.id, |
| 81 | + self.warehouse1.id, |
| 82 | + msg="Order Warehouse must not be equal to 'Test Warehouse #2'", |
| 83 | + ) |
| 84 | + self.assertEqual( |
| 85 | + self.sale_order.warehouse_id.id, |
| 86 | + self.warehouse0.id, |
| 87 | + msg="Order Warehouse must be equal to 'Test Warehouse #1'", |
| 88 | + ) |
0 commit comments