def test_add_to_checkout_form(checkout, product): variant = product.variants.get() add_variant_to_checkout(checkout, variant, 3) data = {'quantity': 1} form = forms.AddToCheckoutForm(data=data, checkout=checkout, product=product) form.get_variant = Mock(return_value=variant) assert form.is_valid() form.save() assert checkout.lines.count() == 1 assert checkout.lines.filter(variant=variant).exists() with pytest.raises(NotImplementedError): data = {'quantity': 1} form = forms.AddToCheckoutForm(data=data, checkout=checkout, product=product) form.is_valid() data = {} form = forms.AddToCheckoutForm(data=data, checkout=checkout, product=product) assert not form.is_valid()
def test_form_when_variant_does_not_exist(): checkout_lines = [] checkout = Mock( add=lambda variant, quantity: checkout_lines.append(Mock()), get_line=Mock(return_value=Mock(quantity=1))) form = forms.AddToCheckoutForm(data={'quantity': 1}, checkout=checkout, product=Mock()) form.get_variant = Mock(side_effect=ObjectDoesNotExist) assert not form.is_valid()
def test_add_to_checkout_form_when_insufficient_stock(product, track_inventory): variant = product.variants.first() variant.track_inventory = track_inventory variant.save() checkout_lines = [] checkout = Mock( add=lambda variant, quantity: checkout_lines.append(variant), get_line=Mock(return_value=Mock(quantity=49))) form = forms.AddToCheckoutForm(data={'quantity': 1}, checkout=checkout, product=Mock()) form.get_variant = Mock(return_value=variant) if track_inventory: assert not form.is_valid() else: assert form.is_valid()