Files @ 252697b842c0
Branch filter:

Location: symposion_app/vendor/registrasion/registrasion/tests/controller_helpers.py

Joel Addison
Update to Django 2.2

Upgrade site and modules to Django 2.2. Remove and replace obsolete
functionality with current equivalents. Update requirements to latest
versions where possible. Remove unused dependencies.
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."
        )