From e05265edd2c1a9f5e70977eaf343ba7aee0855be Mon Sep 17 00:00:00 2001 From: Christopher Neugebauer Date: Thu, 13 Oct 2016 08:31:11 -0700 Subject: [PATCH] Adds test for invoice becoming invalid over time. Tests for #99 --- registrasion/tests/test_invoice.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/registrasion/tests/test_invoice.py b/registrasion/tests/test_invoice.py index a1769fe0..50790874 100644 --- a/registrasion/tests/test_invoice.py +++ b/registrasion/tests/test_invoice.py @@ -168,7 +168,7 @@ class InvoiceTestCase(TestHelperMixin, RegistrationCartTestCase): self.assertTrue(invoice_1.invoice.is_paid) - def test_invoice_voids_self_if_cart_is_invalid(self): + def test_invoice_voids_self_if_cart_changes(self): current_cart = TestingCartController.for_user(self.USER_1) # Should be able to create an invoice after the product is added @@ -190,6 +190,31 @@ class InvoiceTestCase(TestHelperMixin, RegistrationCartTestCase): invoice_2_new = TestingInvoiceController(invoice_2.invoice) self.assertFalse(invoice_2_new.invoice.is_void) + def test_invoice_voids_self_if_cart_becomes_invalid(self): + ''' Invoices should be void if cart becomes invalid over time ''' + + self.make_ceiling("Limit ceiling", limit=1) + self.set_time(datetime.datetime( + year=2015, month=1, day=1, hour=0, minute=0, tzinfo=UTC, + )) + + cart1 = TestingCartController.for_user(self.USER_1) + cart2 = TestingCartController.for_user(self.USER_2) + + # Create a valid invoice for USER_1 + cart1.add_to_cart(self.PROD_1, 1) + inv1 = TestingInvoiceController.for_cart(cart1.cart) + + # Expire the reservations, and have USER_2 take up PROD_1's ceiling + # generate an invoice + self.add_timedelta(self.RESERVATION * 2) + cart2.add_to_cart(self.PROD_2, 1) + inv2 = TestingInvoiceController.for_cart(cart2.cart) + + # Re-get inv1's invoice; it should void itself on loading. + inv1 = TestingInvoiceController(inv1.invoice) + self.assertTrue(inv1.invoice.is_void) + def test_voiding_invoice_creates_new_invoice(self): invoice_1 = self._invoice_containing_prod_1(1)