def test_form_when_variant_does_not_exist(): cart_lines = [] cart = Mock(add=lambda variant, quantity: cart_lines.append(Mock()), get_line=Mock(return_value=Mock(quantity=1))) form = forms.AddToCartForm(data={'quantity': 1}, cart=cart, product=Mock()) form.get_variant = Mock(side_effect=ObjectDoesNotExist) assert not form.is_valid()
def test_add_to_cart_form(): cart_lines = [] cart = Mock(add=lambda variant, quantity: cart_lines.append(variant), get_line=Mock(return_value=Mock(quantity=1))) data = {'quantity': 1} form = forms.AddToCartForm(data=data, cart=cart, product=Mock()) product_variant = Mock(check_quantity=Mock(return_value=None)) form.get_variant = Mock(return_value=product_variant) assert form.is_valid() form.save() assert cart_lines == [product_variant] with pytest.raises(NotImplementedError): data = {'quantity': 1} form = forms.AddToCartForm(data=data, cart=cart, product=Mock()) form.is_valid()
def test_add_to_cart_form_when_insufficient_stock(product): variant = product.variants.first() cart_lines = [] cart = Mock(add=lambda variant, quantity: cart_lines.append(variant), get_line=Mock(return_value=Mock(quantity=49))) form = forms.AddToCartForm(data={'quantity': 1}, cart=cart, product=Mock()) form.get_variant = Mock(return_value=variant) assert not form.is_valid()
def test_add_to_cart_form_when_insufficient_stock(): cart_lines = [] cart = Mock(add=lambda variant, quantity: cart_lines.append(variant), get_line=Mock(return_value=Mock(quantity=1))) form = forms.AddToCartForm(data={'quantity': 1}, cart=cart, product=Mock()) exception_mock = InsufficientStock( Mock(get_stock_quantity=Mock(return_value=4))) product_variant = Mock(check_quantity=Mock(side_effect=exception_mock)) form.get_variant = Mock(return_value=product_variant) assert not form.is_valid()