Adding a test for the OrderProductRelationForm.

This commit is contained in:
Víðir Valberg Guðmundsson 2019-03-29 11:19:31 +01:00
parent 863e089c2b
commit b04e7235d9

View file

@ -1,8 +1,10 @@
from django.core.exceptions import ValidationError
from django.test import TestCase from django.test import TestCase
from django.utils import timezone from django.utils import timezone
from psycopg2.extras import DateTimeTZRange from psycopg2.extras import DateTimeTZRange
from shop.forms import OrderProductRelationForm
from .factories import ( from .factories import (
ProductFactory, ProductFactory,
OrderProductRelationFactory, OrderProductRelationFactory,
@ -81,3 +83,32 @@ class ProductAvailabilityTest(TestCase):
# The factory defines the timeframe as now and 31 days forward. # The factory defines the timeframe as now and 31 days forward.
self.assertTrue(product.is_time_available) self.assertTrue(product.is_time_available)
self.assertTrue(product.is_available()) self.assertTrue(product.is_available())
class TestOrderProductRelationForm(TestCase):
def test_clean_quantity_succeeds_when_stock_not_exceeded(self):
product = ProductFactory(stock_amount=2)
# Mark an order as paid/reserved by setting open to None
opr1 = OrderProductRelationFactory(product=product, quantity=1)
opr1.order.open = None
opr1.order.save()
opr2 = OrderProductRelationFactory(product=product, quantity=1)
form = OrderProductRelationForm(instance=opr2)
self.assertTrue(form.is_valid)
def test_clean_quantity_fails_when_stock_exceeded(self):
product = ProductFactory(stock_amount=2)
# Mark an order as paid/reserved by setting open to None
opr1 = OrderProductRelationFactory(product=product, quantity=1)
opr1.order.open = None
opr1.order.save()
# There should only be 1 product left, since we just reserved 1
opr2 = OrderProductRelationFactory(product=product, quantity=2)
form = OrderProductRelationForm(instance=opr2)
self.assertFalse(form.is_valid())