DRYs up test_invoice a bit
This commit is contained in:
parent
67b047e7b3
commit
9a4574ef2c
1 changed files with 25 additions and 73 deletions
|
@ -18,6 +18,12 @@ UTC = pytz.timezone('UTC')
|
|||
|
||||
class InvoiceTestCase(RegistrationCartTestCase):
|
||||
|
||||
def _invoice_containing_prod_1(self, qty=1):
|
||||
cart = TestingCartController.for_user(self.USER_1)
|
||||
cart.add_to_cart(self.PROD_1, qty)
|
||||
|
||||
return TestingInvoiceController.for_cart(self.reget(cart.cart))
|
||||
|
||||
def test_create_invoice(self):
|
||||
current_cart = TestingCartController.for_user(self.USER_1)
|
||||
|
||||
|
@ -54,10 +60,7 @@ class InvoiceTestCase(RegistrationCartTestCase):
|
|||
invoice_2.invoice.value)
|
||||
|
||||
def test_invoice_controller_for_id_works(self):
|
||||
current_cart = TestingCartController.for_user(self.USER_1)
|
||||
current_cart.add_to_cart(self.PROD_1, 1)
|
||||
|
||||
invoice = TestingInvoiceController.for_cart(current_cart.cart)
|
||||
invoice = self._invoice_containing_prod_1(1)
|
||||
|
||||
id_ = invoice.invoice.id
|
||||
|
||||
|
@ -82,10 +85,8 @@ class InvoiceTestCase(RegistrationCartTestCase):
|
|||
TestingInvoiceController.for_cart(current_cart.cart)
|
||||
|
||||
def test_paying_invoice_makes_new_cart(self):
|
||||
current_cart = TestingCartController.for_user(self.USER_1)
|
||||
current_cart.add_to_cart(self.PROD_1, 1)
|
||||
invoice = self._invoice_containing_prod_1(1)
|
||||
|
||||
invoice = TestingInvoiceController.for_cart(current_cart.cart)
|
||||
invoice.pay("A payment!", invoice.invoice.value)
|
||||
|
||||
# This payment is for the correct amount invoice should be paid.
|
||||
|
@ -96,7 +97,7 @@ class InvoiceTestCase(RegistrationCartTestCase):
|
|||
|
||||
# Asking for a cart should generate a new one
|
||||
new_cart = TestingCartController.for_user(self.USER_1)
|
||||
self.assertNotEqual(current_cart.cart, new_cart.cart)
|
||||
self.assertNotEqual(invoice.invoice.cart, new_cart.cart)
|
||||
|
||||
def test_invoice_includes_discounts(self):
|
||||
voucher = inventory.Voucher.objects.create(
|
||||
|
@ -181,24 +182,16 @@ class InvoiceTestCase(RegistrationCartTestCase):
|
|||
self.assertFalse(invoice_2_new.invoice.is_void)
|
||||
|
||||
def test_voiding_invoice_creates_new_invoice(self):
|
||||
current_cart = TestingCartController.for_user(self.USER_1)
|
||||
|
||||
# Should be able to create an invoice after the product is added
|
||||
current_cart.add_to_cart(self.PROD_1, 1)
|
||||
invoice_1 = TestingInvoiceController.for_cart(current_cart.cart)
|
||||
invoice_1 = self._invoice_containing_prod_1(1)
|
||||
|
||||
self.assertFalse(invoice_1.invoice.is_void)
|
||||
invoice_1.void()
|
||||
|
||||
invoice_2 = TestingInvoiceController.for_cart(current_cart.cart)
|
||||
invoice_2 = TestingInvoiceController.for_cart(invoice_1.invoice.cart)
|
||||
self.assertNotEqual(invoice_1.invoice, invoice_2.invoice)
|
||||
|
||||
def test_cannot_pay_void_invoice(self):
|
||||
current_cart = TestingCartController.for_user(self.USER_1)
|
||||
|
||||
# Should be able to create an invoice after the product is added
|
||||
current_cart.add_to_cart(self.PROD_1, 1)
|
||||
invoice_1 = TestingInvoiceController.for_cart(current_cart.cart)
|
||||
invoice_1 = self._invoice_containing_prod_1(1)
|
||||
|
||||
invoice_1.void()
|
||||
|
||||
|
@ -206,11 +199,7 @@ class InvoiceTestCase(RegistrationCartTestCase):
|
|||
invoice_1.validate_allowed_to_pay()
|
||||
|
||||
def test_cannot_void_paid_invoice(self):
|
||||
current_cart = TestingCartController.for_user(self.USER_1)
|
||||
|
||||
# Should be able to create an invoice after the product is added
|
||||
current_cart.add_to_cart(self.PROD_1, 1)
|
||||
invoice = TestingInvoiceController.for_cart(current_cart.cart)
|
||||
invoice = self._invoice_containing_prod_1(1)
|
||||
|
||||
invoice.pay("Reference", invoice.invoice.value)
|
||||
|
||||
|
@ -218,11 +207,7 @@ class InvoiceTestCase(RegistrationCartTestCase):
|
|||
invoice.void()
|
||||
|
||||
def test_cannot_void_partially_paid_invoice(self):
|
||||
current_cart = TestingCartController.for_user(self.USER_1)
|
||||
|
||||
# Should be able to create an invoice after the product is added
|
||||
current_cart.add_to_cart(self.PROD_1, 1)
|
||||
invoice = TestingInvoiceController.for_cart(current_cart.cart)
|
||||
invoice = self._invoice_containing_prod_1(1)
|
||||
|
||||
invoice.pay("Reference", invoice.invoice.value - 1)
|
||||
self.assertTrue(invoice.invoice.is_unpaid)
|
||||
|
@ -247,10 +232,7 @@ class InvoiceTestCase(RegistrationCartTestCase):
|
|||
invoice.validate_allowed_to_pay()
|
||||
|
||||
def test_overpaid_invoice_results_in_credit_note(self):
|
||||
cart = TestingCartController.for_user(self.USER_1)
|
||||
cart.add_to_cart(self.PROD_1, 1)
|
||||
|
||||
invoice = TestingInvoiceController.for_cart(self.reget(cart.cart))
|
||||
invoice = self._invoice_containing_prod_1(1)
|
||||
|
||||
# Invoice is overpaid by 1 unit
|
||||
to_pay = invoice.invoice.value + 1
|
||||
|
@ -268,10 +250,7 @@ class InvoiceTestCase(RegistrationCartTestCase):
|
|||
self.assertEqual(to_pay - invoice.invoice.value, credit_notes[0].value)
|
||||
|
||||
def test_full_paid_invoice_does_not_generate_credit_note(self):
|
||||
cart = TestingCartController.for_user(self.USER_1)
|
||||
cart.add_to_cart(self.PROD_1, 1)
|
||||
|
||||
invoice = TestingInvoiceController.for_cart(self.reget(cart.cart))
|
||||
invoice = self._invoice_containing_prod_1(1)
|
||||
|
||||
# Invoice is paid evenly
|
||||
invoice.pay("Reference", invoice.invoice.value)
|
||||
|
@ -287,10 +266,7 @@ class InvoiceTestCase(RegistrationCartTestCase):
|
|||
self.assertEqual(0, credit_notes.count())
|
||||
|
||||
def test_refund_partially_paid_invoice_generates_correct_credit_note(self):
|
||||
cart = TestingCartController.for_user(self.USER_1)
|
||||
cart.add_to_cart(self.PROD_1, 1)
|
||||
|
||||
invoice = TestingInvoiceController.for_cart(self.reget(cart.cart))
|
||||
invoice = self._invoice_containing_prod_1(1)
|
||||
|
||||
# Invoice is underpaid by 1 unit
|
||||
to_pay = invoice.invoice.value - 1
|
||||
|
@ -309,10 +285,7 @@ class InvoiceTestCase(RegistrationCartTestCase):
|
|||
self.assertEqual(to_pay, credit_notes[0].value)
|
||||
|
||||
def test_refund_fully_paid_invoice_generates_correct_credit_note(self):
|
||||
cart = TestingCartController.for_user(self.USER_1)
|
||||
cart.add_to_cart(self.PROD_1, 1)
|
||||
|
||||
invoice = TestingInvoiceController.for_cart(self.reget(cart.cart))
|
||||
invoice = self._invoice_containing_prod_1(1)
|
||||
|
||||
to_pay = invoice.invoice.value
|
||||
invoice.pay("Reference", to_pay)
|
||||
|
@ -332,10 +305,7 @@ class InvoiceTestCase(RegistrationCartTestCase):
|
|||
self.assertEqual(to_pay, credit_notes[0].value)
|
||||
|
||||
def test_apply_credit_note_pays_invoice(self):
|
||||
cart = TestingCartController.for_user(self.USER_1)
|
||||
cart.add_to_cart(self.PROD_1, 1)
|
||||
|
||||
invoice = TestingInvoiceController.for_cart(self.reget(cart.cart))
|
||||
invoice = self._invoice_containing_prod_1(1)
|
||||
|
||||
to_pay = invoice.invoice.value
|
||||
invoice.pay("Reference", to_pay)
|
||||
|
@ -363,10 +333,7 @@ class InvoiceTestCase(RegistrationCartTestCase):
|
|||
self.assertEquals(0, commerce.CreditNote.unclaimed().count())
|
||||
|
||||
def test_apply_credit_note_generates_new_credit_note_if_overpaying(self):
|
||||
cart = TestingCartController.for_user(self.USER_1)
|
||||
cart.add_to_cart(self.PROD_1, 2)
|
||||
|
||||
invoice = TestingInvoiceController.for_cart(self.reget(cart.cart))
|
||||
invoice = self._invoice_containing_prod_1(2)
|
||||
|
||||
to_pay = invoice.invoice.value
|
||||
invoice.pay("Reference", to_pay)
|
||||
|
@ -405,10 +372,7 @@ class InvoiceTestCase(RegistrationCartTestCase):
|
|||
)
|
||||
|
||||
def test_cannot_apply_credit_note_on_invalid_invoices(self):
|
||||
cart = TestingCartController.for_user(self.USER_1)
|
||||
cart.add_to_cart(self.PROD_1, 1)
|
||||
|
||||
invoice = TestingInvoiceController.for_cart(self.reget(cart.cart))
|
||||
invoice = self._invoice_containing_prod_1(1)
|
||||
|
||||
to_pay = invoice.invoice.value
|
||||
invoice.pay("Reference", to_pay)
|
||||
|
@ -421,10 +385,7 @@ class InvoiceTestCase(RegistrationCartTestCase):
|
|||
cn = TestingCreditNoteController(credit_note)
|
||||
|
||||
# Create a new cart with invoice, pay it
|
||||
cart = TestingCartController.for_user(self.USER_1)
|
||||
cart.add_to_cart(self.PROD_1, 1)
|
||||
|
||||
invoice_2 = TestingInvoiceController.for_cart(self.reget(cart.cart))
|
||||
invoice_2 = self._invoice_containing_prod_1(1)
|
||||
invoice_2.pay("LOL", invoice_2.invoice.value)
|
||||
|
||||
# Cannot pay paid invoice
|
||||
|
@ -437,20 +398,14 @@ class InvoiceTestCase(RegistrationCartTestCase):
|
|||
cn.apply_to_invoice(invoice_2.invoice)
|
||||
|
||||
# Create a new cart with invoice
|
||||
cart = TestingCartController.for_user(self.USER_1)
|
||||
cart.add_to_cart(self.PROD_1, 1)
|
||||
|
||||
invoice_2 = TestingInvoiceController.for_cart(self.reget(cart.cart))
|
||||
invoice_2 = self._invoice_containing_prod_1(1)
|
||||
invoice_2.void()
|
||||
# Cannot pay void invoice
|
||||
with self.assertRaises(ValidationError):
|
||||
cn.apply_to_invoice(invoice_2.invoice)
|
||||
|
||||
def test_cannot_apply_a_refunded_credit_note(self):
|
||||
cart = TestingCartController.for_user(self.USER_1)
|
||||
cart.add_to_cart(self.PROD_1, 1)
|
||||
|
||||
invoice = TestingInvoiceController.for_cart(self.reget(cart.cart))
|
||||
invoice = self._invoice_containing_prod_1(1)
|
||||
|
||||
to_pay = invoice.invoice.value
|
||||
invoice.pay("Reference", to_pay)
|
||||
|
@ -479,10 +434,7 @@ class InvoiceTestCase(RegistrationCartTestCase):
|
|||
cn.apply_to_invoice(invoice_2.invoice)
|
||||
|
||||
def test_cannot_refund_an_applied_credit_note(self):
|
||||
cart = TestingCartController.for_user(self.USER_1)
|
||||
cart.add_to_cart(self.PROD_1, 1)
|
||||
|
||||
invoice = TestingInvoiceController.for_cart(self.reget(cart.cart))
|
||||
invoice = self._invoice_containing_prod_1(1)
|
||||
|
||||
to_pay = invoice.invoice.value
|
||||
invoice.pay("Reference", to_pay)
|
||||
|
|
Loading…
Reference in a new issue