def _get_shipping(context, product): request = context.get("request") if product.is_deliverable() == False: return { "deliverable": False, "delivery_time": shipping_utils.get_product_delivery_time(request, product) } else: return { "deliverable": True, "delivery_time": shipping_utils.get_product_delivery_time(request, product) }
def test_get_product_delivery_time_2(self): """Tests the product delivery time for the *cart view*. """ request = create_request() request.user = AnonymousUser() customer = customer_utils.get_or_create_customer(request) customer.selected_shipping_method = self.sm1 customer.save() dt = utils.get_product_delivery_time(request, self.p1, for_cart=True) self.assertEqual(dt.min, self.dt1.min) self.assertEqual(dt.max, self.dt1.max) self.assertEqual(dt.unit, self.dt1.unit) dt = utils.get_product_delivery_time(request, self.p2, for_cart=True) self.assertEqual(dt.min, self.dt1.min) self.assertEqual(dt.max, self.dt1.max) self.assertEqual(dt.unit, self.dt1.unit) customer.selected_shipping_method = self.sm2 customer.save() # As the customer has now selected sm2 explicitely the delivery method # for the products is dt2 although the default shipping method is # sm1. dt = utils.get_product_delivery_time(request, self.p1, for_cart=True) self.assertEqual(dt.min, self.dt2.min) self.assertEqual(dt.max, self.dt2.max) self.assertEqual(dt.unit, self.dt2.unit) # For product 2 sm1 is valid, hence we should get dt1 dt = utils.get_product_delivery_time(request, self.p2, for_cart=True) self.assertEqual(dt.min, self.dt2.min) self.assertEqual(dt.max, self.dt2.max) self.assertEqual(dt.unit, self.dt2.unit) # Create a weigth criterion and add it to the shipping method 1. That # means sm1 is not valid anymore for p1. c = WeightCriterion.objects.create(weight=10.0, operator=GREATER_THAN) co = CriteriaObjects(criterion=c, content=self.sm1) co.save() # And even if the customer select sm1 explicitely ... customer.selected_shipping_method = self.sm1 customer.save() # ... the shipping method for p1 is sm2 and hence the delivery time is # dt1 dt = utils.get_product_delivery_time(request, self.p1, for_cart=True) self.assertEqual(dt.min, self.dt2.min) self.assertEqual(dt.max, self.dt2.max) self.assertEqual(dt.unit, self.dt2.unit)
def test_get_product_delivery_time_1(self): """Tests the product delivery time for the *product view*. """ request = create_request() request.user = AnonymousUser() customer = customer_utils.get_or_create_customer(request) customer.selected_shipping_method = self.sm1 customer.save() # We select a explicitely shipping method for the customer. For the # product view this shouldn't make a difference. It should always the # first valid shipping method be taken to display the delivery time. customer.selected_shipping_method = self.sm2 customer.save() # Create a weigth criterion and add it to the shipping method 1. c = WeightCriterion.objects.create(weight=10.0, operator=GREATER_THAN) co = CriteriaObjects(criterion=c, content=self.sm1) co.save() # Create a weigth criterion and add it to the shipping method 2. c = WeightCriterion.objects.create(weight=10.0, operator=LESS_THAN) co = CriteriaObjects(criterion=c, content=self.sm2) co.save() # Now we ask for the delivery time for product 1. As sm1 is not valid # (p1 has an weight of 6.0) we should get the delivery time from sm2, # which is dt2 dt = utils.get_product_delivery_time(request, self.p1) self.assertEqual(dt.min, self.dt2.min) self.assertEqual(dt.max, self.dt2.max) self.assertEqual(dt.unit, self.dt2.unit) # For product 2 sm1 is valid (p2 has an weight of 11.0), hence we should # get dt1. dt = utils.get_product_delivery_time(request, self.p2) self.assertEqual(dt.min, self.dt1.min) self.assertEqual(dt.max, self.dt1.max) self.assertEqual(dt.unit, self.dt1.unit) # Now we switch to manual delivery time self.p1.manual_delivery_time = True self.p1.delivery_time = self.dt3 self.p1.save() dt = utils.get_product_delivery_time(request, self.p1) self.assertEqual(dt.min, self.dt3.min) self.assertEqual(dt.max, self.dt3.max) self.assertEqual(dt.unit, self.dt3.unit)