mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
[IMP] stock_delivery_planner: improve unit tests
This commit is contained in:
@@ -1,34 +1,33 @@
|
|||||||
from odoo import fields
|
from odoo import fields
|
||||||
from odoo.tests.common import Form, TransactionCase
|
from odoo.tests.common import Form, TransactionCase
|
||||||
# import logging
|
|
||||||
# _logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class TestStockDeliveryPlanner(TransactionCase):
|
class TestStockDeliveryPlanner(TransactionCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
"""
|
||||||
|
NOTE: demo Fedex credentials may not work. Test credentials may not return all service types.
|
||||||
|
Configuring production credentials may be necessary for this test to run.
|
||||||
|
"""
|
||||||
super(TestStockDeliveryPlanner, self).setUp()
|
super(TestStockDeliveryPlanner, self).setUp()
|
||||||
try:
|
try:
|
||||||
self.fedex_delivery = self.browse_ref('delivery_fedex.delivery_carrier_fedex_us')
|
self.fedex_ground = self.browse_ref('delivery_fedex.delivery_carrier_fedex_us')
|
||||||
except ValueError:
|
except ValueError:
|
||||||
self.skipTest('FedEx Shipping Connector demo data is required to run this test.')
|
self.skipTest('FedEx Shipping Connector demo data is required to run this test.')
|
||||||
self.env['ir.config_parameter'].sudo().set_param('sale.order.planner.carrier_domain',
|
self.env['ir.config_parameter'].sudo().set_param('sale.order.planner.carrier_domain',
|
||||||
"[('id', 'in', (%d,))]" % self.fedex_delivery.id)
|
"[('id', 'in', (%d,))]" % self.fedex_ground.id)
|
||||||
self.env['ir.config_parameter'].sudo().set_param('stock.delivery.planner.carrier_domain',
|
self.env['ir.config_parameter'].sudo().set_param('stock.delivery.planner.carrier_domain',
|
||||||
"[('id', 'in', (%d,))]" % self.fedex_delivery.id)
|
"[('id', 'in', (%d,))]" % self.fedex_ground.id)
|
||||||
# Does it make sense to set default package in fedex_rate_shipment_multi
|
# Does it make sense to set default package in fedex_rate_shipment_multi
|
||||||
# instead of relying on a correctly configured delivery method?
|
# instead of relying on a correctly configured delivery method?
|
||||||
self.fedex_package = self.browse_ref('delivery_fedex.fedex_packaging_FEDEX_25KG_BOX')
|
self.fedex_package = self.browse_ref('delivery_fedex.fedex_packaging_FEDEX_25KG_BOX')
|
||||||
self.default_package = self.browse_ref('delivery_fedex.fedex_packaging_YOUR_PACKAGING')
|
self.default_package = self.browse_ref('delivery_fedex.fedex_packaging_YOUR_PACKAGING')
|
||||||
self.fedex_delivery.fedex_default_packaging_id = self.default_package
|
self.fedex_ground.fedex_default_packaging_id = self.default_package
|
||||||
# PRIORITY_OVERNIGHT might not be available depending on time of day?
|
# PRIORITY_OVERNIGHT might not be available depending on time of day?
|
||||||
self.fedex_delivery.fedex_service_type = 'GROUND_HOME_DELIVERY'
|
self.fedex_ground.fedex_service_type = 'FEDEX_GROUND'
|
||||||
self.fedex_delivery_express = self.fedex_delivery.fedex_find_delivery_carrier_for_service('FEDEX_EXPRESS_SAVER')
|
|
||||||
if self.fedex_delivery_express:
|
self.fedex_2_day = self.fedex_ground.copy()
|
||||||
self.fedex_delivery_express.fedex_default_packaging_id = self.default_package
|
self.fedex_2_day.name = 'Test FedEx Delivery'
|
||||||
else:
|
self.fedex_2_day.fedex_service_type = 'FEDEX_2_DAY'
|
||||||
self.fedex_delivery_express = self.fedex_delivery.copy()
|
|
||||||
self.fedex_delivery_express.name = 'Test FedEx Delivery'
|
|
||||||
self.fedex_delivery_express.fedex_service_type = 'FEDEX_EXPRESS_SAVER'
|
|
||||||
|
|
||||||
delivery_calendar = self.env['resource.calendar'].create({
|
delivery_calendar = self.env['resource.calendar'].create({
|
||||||
'name': 'Test Delivery Calendar',
|
'name': 'Test Delivery Calendar',
|
||||||
@@ -41,8 +40,8 @@ class TestStockDeliveryPlanner(TransactionCase):
|
|||||||
(0, 0, {'name': 'Friday', 'dayofweek': '4', 'hour_from': 0, 'hour_to': 24, 'day_period': 'morning'}),
|
(0, 0, {'name': 'Friday', 'dayofweek': '4', 'hour_from': 0, 'hour_to': 24, 'day_period': 'morning'}),
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
self.fedex_delivery.delivery_calendar_id = delivery_calendar
|
self.fedex_ground.delivery_calendar_id = delivery_calendar
|
||||||
self.fedex_delivery_express.delivery_calendar_id = delivery_calendar
|
self.fedex_2_day.delivery_calendar_id = delivery_calendar
|
||||||
self.env['stock.warehouse'].search([]).write({'shipping_calendar_id': delivery_calendar.id})
|
self.env['stock.warehouse'].search([]).write({'shipping_calendar_id': delivery_calendar.id})
|
||||||
|
|
||||||
# needs a valid address for sender and recipient
|
# needs a valid address for sender and recipient
|
||||||
@@ -68,6 +67,7 @@ class TestStockDeliveryPlanner(TransactionCase):
|
|||||||
'zip': '98270',
|
'zip': '98270',
|
||||||
'country_id': self.country_usa.id,
|
'country_id': self.country_usa.id,
|
||||||
'property_product_pricelist': pricelist.id,
|
'property_product_pricelist': pricelist.id,
|
||||||
|
'is_company': True,
|
||||||
# 'partner_latitude': 48.05636,
|
# 'partner_latitude': 48.05636,
|
||||||
# 'partner_longitude': -122.14922,
|
# 'partner_longitude': -122.14922,
|
||||||
})
|
})
|
||||||
@@ -97,7 +97,7 @@ class TestStockDeliveryPlanner(TransactionCase):
|
|||||||
|
|
||||||
order_plan_action = self.sale_order.action_planorder()
|
order_plan_action = self.sale_order.action_planorder()
|
||||||
order_plan = self.env[order_plan_action['res_model']].browse(order_plan_action['res_id'])
|
order_plan = self.env[order_plan_action['res_model']].browse(order_plan_action['res_id'])
|
||||||
order_plan.planning_option_ids.filtered(lambda o: o.carrier_id == self.fedex_delivery).select_plan()
|
order_plan.planning_option_ids.filtered(lambda o: o.carrier_id == self.fedex_ground).select_plan()
|
||||||
|
|
||||||
self.sale_order.action_confirm()
|
self.sale_order.action_confirm()
|
||||||
self.picking = self.sale_order.picking_ids
|
self.picking = self.sale_order.picking_ids
|
||||||
@@ -109,7 +109,7 @@ class TestStockDeliveryPlanner(TransactionCase):
|
|||||||
grp_pack = self.env.ref('stock.group_tracking_lot')
|
grp_pack = self.env.ref('stock.group_tracking_lot')
|
||||||
self.env.user.write({'groups_id': [(4, grp_pack.id)]})
|
self.env.user.write({'groups_id': [(4, grp_pack.id)]})
|
||||||
|
|
||||||
self.assertEqual(self.picking.carrier_id, self.fedex_delivery, 'Carrier did not carry over to Delivery Order')
|
self.assertEqual(self.picking.carrier_id, self.fedex_ground, 'Carrier did not carry over to Delivery Order')
|
||||||
self.assertEqual(self.picking.weight, 5.0)
|
self.assertEqual(self.picking.weight, 5.0)
|
||||||
self.assertEqual(self.picking.shipping_weight, 0.0)
|
self.assertEqual(self.picking.shipping_weight, 0.0)
|
||||||
|
|
||||||
@@ -125,21 +125,18 @@ class TestStockDeliveryPlanner(TransactionCase):
|
|||||||
planner = self.env[action['res_model']].browse(action['res_id'])
|
planner = self.env[action['res_model']].browse(action['res_id'])
|
||||||
|
|
||||||
self.assertEqual(planner.picking_id, self.picking)
|
self.assertEqual(planner.picking_id, self.picking)
|
||||||
# _logger.warn('delivery plan options: %s' % ', '.join(planner.plan_option_ids.mapped('carrier_id.name')))
|
self.assertGreater(len(planner.plan_option_ids), 1)
|
||||||
# Why am I only getting one rate back? Does FEDEX_EXPRESS_SAVER not work on Fridays or something?
|
|
||||||
# self.assertGreater(len(planner.plan_option_ids), 1)
|
|
||||||
|
|
||||||
# plan_option = planner.plan_option_ids.filtered(lambda o: o.carrier_id == self.fedex_delivery_express)
|
plan_option = planner.plan_option_ids.filtered(lambda o: o.carrier_id == self.fedex_2_day)
|
||||||
plan_option = planner.plan_option_ids.filtered(lambda o: o.carrier_id == self.fedex_delivery)
|
|
||||||
self.assertEqual(len(plan_option), 1)
|
self.assertEqual(len(plan_option), 1)
|
||||||
self.assertGreater(plan_option.price, 0.0)
|
self.assertGreater(plan_option.price, 0.0)
|
||||||
self.assertEqual(plan_option.date_planned.date(), fields.Date().today())
|
self.assertEqual(plan_option.date_planned.date(), fields.Date().today())
|
||||||
self.assertTrue(plan_option.requested_date)
|
self.assertTrue(plan_option.requested_date)
|
||||||
# self.assertEqual(plan_option.transit_days, 3)
|
self.assertEqual(plan_option.transit_days, 2)
|
||||||
self.assertEqual(plan_option.transit_days, 1)
|
|
||||||
self.assertEqual(plan_option.sale_requested_date, self.sale_order.requested_date)
|
self.assertEqual(plan_option.sale_requested_date, self.sale_order.requested_date)
|
||||||
# self.assertEqual(plan_option.days_different, 2)
|
# Order Planner expects to ship tomorrow: we are shipping a day early and using
|
||||||
|
# 2-day shipping instead of 3, giving us 2 days difference
|
||||||
|
self.assertEqual(plan_option.days_different, -2.0)
|
||||||
|
|
||||||
plan_option.select_plan()
|
plan_option.select_plan()
|
||||||
# self.assertEqual(self.picking.carrier_id, self.fedex_delivery_express)
|
self.assertEqual(self.picking.carrier_id, self.fedex_2_day)
|
||||||
self.assertEqual(self.picking.carrier_id, self.fedex_delivery)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user