Beispiel #1
0
    def test_weight_calculation_of_basket(self):
        basket = Basket()
        basket.add_product(create_product(attributes={'weight': 1}))
        basket.add_product(create_product(attributes={'weight': 2}))

        scales = Scales(attribute_code='weight')
        self.assertEquals(1+2, scales.weigh_basket(basket))
Beispiel #2
0
    def test_weight_calculation_of_basket(self):
        basket = Basket()
        basket.add_product(create_product(attributes={'weight': 1}))
        basket.add_product(create_product(attributes={'weight': 2}))

        scales = Scales(attribute_code='weight')
        self.assertEquals(1 + 2, scales.weigh_basket(basket))
Beispiel #3
0
    def test_weight_calculation_of_basket_with_line_quantity(self):
        basket = Basket()
        basket.add_product(create_product(attributes={'weight': 1}), quantity=3)
        basket.add_product(create_product(attributes={'weight': 2}), quantity=4)

        scales = Scales(attribute_code='weight')
        self.assertEquals(1*3+2*4, scales.weigh_basket(basket))
Beispiel #4
0
    def test_weight_calculation_of_basket_with_line_quantity(self):
        basket = Basket()
        basket.add_product(create_product(attributes={"weight": 1}), quantity=3)
        basket.add_product(create_product(attributes={"weight": 2}), quantity=4)

        scales = Scales(attribute_code="weight")
        self.assertEquals(1 * 3 + 2 * 4, scales.weigh_basket(basket))
Beispiel #5
0
 def charge_incl_tax(self):
     scales = Scales(attribute_code=self.weight_attribute, default_weight=self.default_weight)
     weight = scales.weigh_basket(self._basket)
     band = self.get_band_for_weight(weight)
     if not band:
         if self.bands.all().exists() and self.upper_charge:
             return self.upper_charge
         else:
             return D("0.00")
     return band.charge
Beispiel #6
0
 def charge_incl_tax(self):
     scales = Scales(attribute_code=self.weight_attribute,
                     default_weight=self.default_weight)
     weight = scales.weigh_basket(self._basket)
     band = self.get_band_for_weight(weight)
     if not band:
         if self.bands.all().exists() and self.upper_charge:
             return self.upper_charge
         else:
             return D('0.00')
     return band.charge
Beispiel #7
0
    def test_returns_correct_weight_for_nonempty_basket(self):
        basket = factories.create_basket(empty=True)
        products = [
            factories.create_product(attributes={'weight': '1'},
                                     price=D('5.00')),
            factories.create_product(attributes={'weight': '2'},
                                     price=D('5.00'))]
        for product in products:
            basket.add(product)

        scales = Scales(attribute_code='weight')
        self.assertEqual(1 + 2, scales.weigh_basket(basket))
Beispiel #8
0
    def test_returns_correct_weight_for_nonempty_basket_with_line_quantities(self):
        basket = factories.create_basket(empty=True)
        products = [
            (factories.create_product(attributes={'weight': '1'},
                                      price=D('5.00')), 3),
            (factories.create_product(attributes={'weight': '2'},
                                      price=D('5.00')), 4)]
        for product, quantity in products:
            basket.add(product, quantity=quantity)

        scales = Scales(attribute_code='weight')
        self.assertEqual(1*3 + 2*4, scales.weigh_basket(basket))
Beispiel #9
0
 def charge_incl_tax(self):
     # Note, when weighing the basket, we don't check whether the item
     # requires shipping or not.  It is assumed that if something has a
     # weight, then it requires shipping.
     scales = Scales(attribute_code=self.weight_attribute,
                     default_weight=self.default_weight)
     weight = scales.weigh_basket(self._basket)
     band = self.get_band_for_weight(weight)
     if not band:
         if self.bands.all().exists() and self.upper_charge:
             return self.upper_charge
         else:
             return D('0.00')
     return band.charge
Beispiel #10
0
 def charge_incl_tax(self):
     # Note, when weighing the basket, we don't check whether the item
     # requires shipping or not.  It is assumed that if something has a
     # weight, then it requires shipping.
     scales = Scales(attribute_code=self.weight_attribute,
                     default_weight=self.default_weight)
     weight = scales.weigh_basket(self._basket)
     band = self.get_band_for_weight(weight)
     if not band:
         if self.bands.all().exists() and self.upper_charge:
             return self.upper_charge
         else:
             return D('0.00')
     return band.charge
Beispiel #11
0
 def basket_charge_incl_tax(self):
     weight = Scales(attribute_code=self.weight_attribute, default_weight=self.default_weight).weigh_basket(self._basket)
     band = self.get_band_for_weight(weight)
     if not band:
         if self.bands.all().count() > 0 and self.upper_charge:
             return self.upper_charge
         else:
             return D('0.00')
     return band.charge
Beispiel #12
0
 def test_simple_weight_calculation(self):
     scales = Scales(attribute_code='weight')
     p = create_product(attributes={'weight': 1})
     self.assertEqual(1, scales.weigh_product(p))
Beispiel #13
0
    def test_returns_zero_for_empty_basket(self):
        basket = Basket()

        scales = Scales(attribute_code='weight')
        self.assertEqual(0, scales.weigh_basket(basket))
Beispiel #14
0
 def test_simple_weight_calculation(self):
     scales = Scales(attribute_code='weight')
     p = create_product(attributes={'weight': 1})
     self.assertEqual(1, scales.weigh_product(p))
Beispiel #15
0
 def test_uses_default_weight_when_attribute_is_missing(self):
     scales = Scales(attribute_code='weight', default_weight=0.5)
     p = factories.create_product()
     self.assertEqual(0.5, scales.weigh_product(p))
Beispiel #16
0
 def test_raises_exception_when_attribute_is_missing(self):
     scales = Scales(attribute_code='weight')
     p = factories.create_product()
     with self.assertRaises(ValueError):
         scales.weigh_product(p)
Beispiel #17
0
 def test_weighs_uses_specified_attribute(self):
     scales = Scales(attribute_code='weight')
     p = factories.create_product(attributes={'weight': '1'})
     self.assertEqual(1, scales.weigh_product(p))
Beispiel #18
0
    def test_weight_calculation_of_empty_basket(self):
        basket = Basket()

        scales = Scales(attribute_code='weight')
        self.assertEquals(0, scales.weigh_basket(basket))
Beispiel #19
0
    def test_weight_calculation_of_empty_basket(self):
        basket = Basket()

        scales = Scales(attribute_code='weight')
        self.assertEquals(0, scales.weigh_basket(basket))
Beispiel #20
0
 def test_default_weight_is_used_when_attribute_is_missing(self):
     scales = Scales(attribute_code="weight", default_weight=0.5)
     p = create_product()
     self.assertEqual(0.5, scales.weigh_product(p))
Beispiel #21
0
 def test_exception_is_raised_when_attribute_is_missing(self):
     scales = Scales(attribute_code="weight")
     p = create_product()
     with self.assertRaises(ValueError):
         scales.weigh_product(p)