def _generate_rate_credits_for_testing(self, fee, rate_kwarg, generate_invoice_credit=True):
        """
        Generates enough line item credit for two invoicing periods.
        """
        rate_credit_by_account = CreditLine.add_rate_credit(
            fee,
            self.account,
            **rate_kwarg
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=rate_credit_by_account).count(), 1)

        rate_credit_by_subscription = CreditLine.add_rate_credit(
            fee,
            self.account,
            subscription=self.subscription,
            **rate_kwarg
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=rate_credit_by_subscription).count(), 1)

        if generate_invoice_credit:
            # this credit should not count toward the line item
            subscription_credit = CreditLine.add_subscription_credit(
                fee,
                self.subscription
            )
            self.assertEqual(CreditAdjustment.objects.filter(credit_line=subscription_credit).count(), 1)

        return rate_credit_by_account, rate_credit_by_subscription
    def test_balance_adjustment(self):
        """
        Makes sure that the balance is added to the same invoice and same line item credit.
        """
        product_credit = CreditLine.add_rate_credit(
            self.product_rate.monthly_fee,
            self.account,
            product_rate=self.product_rate,
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=product_credit).count(), 1)
        CreditLine.add_rate_credit(
            self.product_rate.monthly_fee,
            self.account,
            product_rate=self.product_rate,
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=product_credit).count(), 2)
        current_product_credit = CreditLine.objects.get(id=product_credit.id)
        self.assertEqual(current_product_credit.balance, self.product_rate.monthly_fee * 2)

        subscription_credit = CreditLine.add_subscription_credit(
            self.monthly_user_fee,
            self.subscription
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=subscription_credit).count(), 1)
        CreditLine.add_subscription_credit(
            self.monthly_user_fee,
            self.subscription
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=subscription_credit).count(), 2)
        current_subscription_credit = CreditLine.objects.get(id=subscription_credit.id)
        self.assertEqual(current_subscription_credit.balance, self.monthly_user_fee * 2)

        account_credit = CreditLine.add_account_credit(
            self.product_rate.monthly_fee,
            self.account
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=account_credit).count(), 1)
        CreditLine.add_account_credit(
            self.monthly_user_fee,
            self.account
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=account_credit).count(), 2)
        current_account_credit = CreditLine.objects.get(id=account_credit.id)
        self.assertEqual(current_account_credit.balance, self.product_rate.monthly_fee + self.monthly_user_fee)
    def _generate_subscription_and_account_invoice_credits(self, monthly_fee, subscription, account):
        subscription_credit = CreditLine.add_subscription_credit(
            monthly_fee,
            subscription
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=subscription_credit).count(), 1)

        account_credit = CreditLine.add_account_credit(
            monthly_fee,
            account
        )
        self.assertEqual(CreditAdjustment.objects.filter(credit_line=account_credit).count(), 1)
        return subscription_credit, account_credit
示例#4
0
 def add_subscription_level():
     CreditLine.add_subscription_credit(amount, subscription,
                                        note=note)