示例#1
0
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()
示例#2
0
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()
示例#3
0
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()