def test_transfers_vouchers_to_new_basket(self): baskets = [factories.BasketFactory(), factories.BasketFactory()] voucher = factories.VoucherFactory() baskets[0].vouchers.add(voucher) baskets[1].merge(baskets[0]) self.assertEqual(1, baskets[1].vouchers.all().count())
def worker(): order_number = threading.current_thread().name basket = factories.BasketFactory() basket.add_product(product) place_order( creator, basket=basket, order_number=order_number, user=user)
def test_overflow_shipping_cost_scenario_handled_correctly(self): basket = factories.BasketFactory() product_attribute_value = factories.ProductAttributeValueFactory( value_float=2.5) basket.add_product(product_attribute_value.product) self.standard.bands.create(upper_limit=1, charge=D('1.00')) self.standard.bands.create(upper_limit=2, charge=D('2.00')) charge = self.standard.calculate(basket) self.assertEqual(D('1.00') + D('2.00'), charge.excl_tax)
def test_simple_shipping_cost_scenario_handled_correctly(self): basket = factories.BasketFactory() product_attribute_value = factories.ProductAttributeValueFactory( value_float=2.5) basket.add_product(product_attribute_value.product) expected_charge = D('3.00') self.standard.bands.create(upper_limit=3, charge=expected_charge) charge = self.standard.calculate(basket) self.assertEqual(expected_charge, charge.excl_tax)
def test_cannot_add_a_product_without_price(self): basket = factories.BasketFactory() product = factories.create_product(price=None) data = {'quantity': 1} form = forms.AddToBasketForm(basket=basket, product=product, data=data) self.assertFalse(form.is_valid()) self.assertEqual( form.errors['__all__'][0], 'This product cannot be added to the basket because a price ' 'could not be determined for it.', )
def test_checks_if_purchase_is_permitted(self): basket = factories.BasketFactory() product = factories.ProductFactory() # Build a 4-level mock monster so we can force the return value of # whether the product is available to buy. This is a serious code smell # and needs to be remedied. info = mock.Mock() info.availability = mock.Mock() info.availability.is_purchase_permitted = mock.Mock( return_value=(False, "Not on your nelly!")) basket.strategy.fetch_for_product = mock.Mock(return_value=info) data = {'quantity': 1} form = forms.AddToBasketForm(basket=basket, product=product, data=data) self.assertFalse(form.is_valid()) self.assertEqual('Not on your nelly!', form.errors['__all__'][0])