1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/delivery_easypost/tests/test_easypost_request.py
2024-12-10 09:04:09 +07:00

77 lines
3.9 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.addons.delivery_easypost.models.easypost_request import EasypostRequest
from odoo.addons.delivery_easypost.tests.common import EasypostTestCommon
from odoo.tests import tagged
@tagged('-standard', 'external')
class TestEasypostRequest(EasypostTestCommon):
def setUp(self):
super().setUp()
self.easypost = EasypostRequest("XXX", lambda x: None)
def test_prepare_order_shipments(self):
SaleOrder = self.env["sale.order"]
sol_1_vals = {"product_id": self.server.id, 'product_uom_qty': 1}
sol_2_vals = {"product_id": self.miniServer.id, 'product_uom_qty': 1}
so_vals_fedex = {"partner_id": self.jackson.id, "order_line": [(0, None, sol_1_vals), (0, None, sol_2_vals)]}
sale_order_fedex = SaleOrder.create(so_vals_fedex)
carrier = self.easypost_fedex_carrier
delivery_packages = carrier._get_packages_from_order(sale_order_fedex, carrier.easypost_default_package_type_id)
shipment = self.easypost._prepare_shipments(carrier, delivery_packages)
self.assertEqual(shipment["order[shipments][0][parcel][weight]"], 80)
self.assertFalse("order[shipments][1][parcel][weight]" in shipment, "Should have only 1 shipment")
def test_prepare_order_shipments_multiple(self):
self.fedex_default_package_type.max_weight = 3
SaleOrder = self.env["sale.order"]
sol_1_vals = {"product_id": self.server.id, 'product_uom_qty': 1}
sol_2_vals = {"product_id": self.miniServer.id, 'product_uom_qty': 1}
so_vals_fedex = {"partner_id": self.jackson.id, "order_line": [(0, None, sol_1_vals), (0, None, sol_2_vals)]}
sale_order_fedex = SaleOrder.create(so_vals_fedex)
carrier = self.easypost_fedex_carrier
delivery_packages = carrier._get_packages_from_order(sale_order_fedex, carrier.easypost_default_package_type_id)
shipment = self.easypost._prepare_shipments(carrier, delivery_packages)
self.assertEqual(shipment["order[shipments][0][parcel][weight]"], 3 * 16, "First package weight")
self.assertTrue("order[shipments][1][parcel][weight]" in shipment, "Should have 2 shipments")
self.assertEqual(shipment["order[shipments][1][parcel][weight]"], 2 * 16, "Leftover weight")
self.assertFalse("order[shipments][2][parcel][weight]" in shipment, "Should have 2 shipments")
def test_prepare_order_shipments_no_max_weight(self):
self.fedex_default_package_type.max_weight = 0
SaleOrder = self.env["sale.order"]
sol_1_vals = {"product_id": self.server.id, 'product_uom_qty': 1}
sol_2_vals = {"product_id": self.miniServer.id, 'product_uom_qty': 1}
so_vals_fedex = {"partner_id": self.jackson.id, "order_line": [(0, None, sol_1_vals), (0, None, sol_2_vals)]}
sale_order_fedex = SaleOrder.create(so_vals_fedex)
carrier = self.easypost_fedex_carrier
delivery_packages = carrier._get_packages_from_order(sale_order_fedex, carrier.easypost_default_package_type_id)
shipment = self.easypost._prepare_shipments(carrier, delivery_packages)
self.assertEqual(shipment["order[shipments][0][parcel][weight]"], 80)
self.assertFalse('order[shipments][1][parcel][weight]' in shipment, 'Should have only 1 shipment')
@tagged('standard', '-external')
class TestMockedEasypostRequest(TestEasypostRequest):
def setUp(self):
with self.patch_easypost_requests():
super().setUp()
def test_prepare_order_shipments(self):
with self.patch_easypost_requests():
super().test_prepare_order_shipments()
def test_prepare_order_shipments_multiple(self):
with self.patch_easypost_requests():
super().test_prepare_order_shipments_multiple()
def test_prepare_order_shipments_no_max_weight(self):
with self.patch_easypost_requests():
super().test_prepare_order_shipments_no_max_weight()