63 lines
2 KiB
Python
63 lines
2 KiB
Python
from registrasion.controllers.cart import CartController
|
|
from registrasion.controllers.credit_note import CreditNoteController
|
|
from registrasion.controllers.invoice import InvoiceController
|
|
from registrasion.models import commerce
|
|
|
|
from django.core.exceptions import ObjectDoesNotExist
|
|
|
|
|
|
class TestingCartController(CartController):
|
|
|
|
def set_quantity(self, product, quantity, batched=False):
|
|
''' Sets the _quantity_ of the given _product_ in the cart to the given
|
|
_quantity_. '''
|
|
|
|
self.set_quantities(((product, quantity),))
|
|
|
|
def add_to_cart(self, product, quantity):
|
|
''' Adds _quantity_ of the given _product_ to the cart. Raises
|
|
ValidationError if constraints are violated.'''
|
|
|
|
try:
|
|
product_item = commerce.ProductItem.objects.get(
|
|
cart=self.cart,
|
|
product=product)
|
|
old_quantity = product_item.quantity
|
|
except ObjectDoesNotExist:
|
|
old_quantity = 0
|
|
self.set_quantity(product, old_quantity + quantity)
|
|
|
|
def next_cart(self):
|
|
if self.cart.status == commerce.Cart.STATUS_ACTIVE:
|
|
self.cart.status = commerce.Cart.STATUS_PAID
|
|
self.cart.save()
|
|
|
|
|
|
class TestingInvoiceController(InvoiceController):
|
|
|
|
def pay(self, reference, amount, pre_validate=True):
|
|
''' Testing method for simulating an invoice paymenht by the given
|
|
amount. '''
|
|
|
|
if pre_validate:
|
|
# Manual payments don't pre-validate; we should test that things
|
|
# still work if we do silly things.
|
|
self.validate_allowed_to_pay()
|
|
|
|
''' Adds a payment '''
|
|
commerce.PaymentBase.objects.create(
|
|
invoice=self.invoice,
|
|
reference=reference,
|
|
amount=amount,
|
|
)
|
|
|
|
self.update_status()
|
|
|
|
|
|
class TestingCreditNoteController(CreditNoteController):
|
|
|
|
def refund(self):
|
|
commerce.CreditNoteRefund.objects.create(
|
|
parent=self.credit_note,
|
|
reference="Whoops."
|
|
)
|