[IMP] stock_delivery_planner: improve unit tests

This commit is contained in:
Cedric Collins
2021-09-13 16:33:15 -05:00
parent e43377e500
commit b64e2f25d7

View File

@@ -1,34 +1,33 @@
from odoo import fields
from odoo.tests.common import Form, TransactionCase
# import logging
# _logger = logging.getLogger(__name__)
class TestStockDeliveryPlanner(TransactionCase):
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()
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:
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',
"[('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',
"[('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
# instead of relying on a correctly configured delivery method?
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.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?
self.fedex_delivery.fedex_service_type = 'GROUND_HOME_DELIVERY'
self.fedex_delivery_express = self.fedex_delivery.fedex_find_delivery_carrier_for_service('FEDEX_EXPRESS_SAVER')
if self.fedex_delivery_express:
self.fedex_delivery_express.fedex_default_packaging_id = self.default_package
else:
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'
self.fedex_ground.fedex_service_type = 'FEDEX_GROUND'
self.fedex_2_day = self.fedex_ground.copy()
self.fedex_2_day.name = 'Test FedEx Delivery'
self.fedex_2_day.fedex_service_type = 'FEDEX_2_DAY'
delivery_calendar = self.env['resource.calendar'].create({
'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'}),
],
})
self.fedex_delivery.delivery_calendar_id = delivery_calendar
self.fedex_delivery_express.delivery_calendar_id = delivery_calendar
self.fedex_ground.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})
# needs a valid address for sender and recipient
@@ -68,6 +67,7 @@ class TestStockDeliveryPlanner(TransactionCase):
'zip': '98270',
'country_id': self.country_usa.id,
'property_product_pricelist': pricelist.id,
'is_company': True,
# 'partner_latitude': 48.05636,
# 'partner_longitude': -122.14922,
})
@@ -97,7 +97,7 @@ class TestStockDeliveryPlanner(TransactionCase):
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.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.picking = self.sale_order.picking_ids
@@ -109,7 +109,7 @@ class TestStockDeliveryPlanner(TransactionCase):
grp_pack = self.env.ref('stock.group_tracking_lot')
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.shipping_weight, 0.0)
@@ -125,21 +125,18 @@ class TestStockDeliveryPlanner(TransactionCase):
planner = self.env[action['res_model']].browse(action['res_id'])
self.assertEqual(planner.picking_id, self.picking)
# _logger.warn('delivery plan options: %s' % ', '.join(planner.plan_option_ids.mapped('carrier_id.name')))
# 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)
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_delivery)
plan_option = planner.plan_option_ids.filtered(lambda o: o.carrier_id == self.fedex_2_day)
self.assertEqual(len(plan_option), 1)
self.assertGreater(plan_option.price, 0.0)
self.assertEqual(plan_option.date_planned.date(), fields.Date().today())
self.assertTrue(plan_option.requested_date)
# self.assertEqual(plan_option.transit_days, 3)
self.assertEqual(plan_option.transit_days, 1)
self.assertEqual(plan_option.transit_days, 2)
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()
# self.assertEqual(self.picking.carrier_id, self.fedex_delivery_express)
self.assertEqual(self.picking.carrier_id, self.fedex_delivery)
self.assertEqual(self.picking.carrier_id, self.fedex_2_day)