예제 #1
0
 def test_upgrade(self):
     plan = RentalPlan.objects.get(slug="unlimited1")
     self.signup_plan(plan)
     new_plan = RentalPlan.objects.get(slug="unlimited2")
     mrp = MemberRentalPlan.objects.all()[0]
     change_plan(mrp, new_plan)
     self.assertEqual(BillingHistory.objects.count(), 2)
     _bh = BillingHistory.objects.all()[0]
     invoice_num = 'RENT_CHNG_%s_%s' % (_bh.user.pk, _bh.pk)
     self.assertEqual(_bh.aim_response['invoice_number'], invoice_num)
     self.assertEqual(MemberRentalPlanHistory.objects.count(), 1)
예제 #2
0
    def test_downgrade(self):
        plan = RentalPlan.objects.get(slug="unlimited2")
        self.signup_plan(plan)
        new_plan = RentalPlan.objects.get(slug="unlimited1")
        mrp = MemberRentalPlan.objects.all()[0]
        change_plan(mrp, new_plan)
        self.assertEqual(BillingHistory.objects.count(), 1)
        self.assertEqual(mrp.rental_plan.slug, "unlimited2")
        _bh = BillingHistory.objects.all()[0]
        self.assertEqual(_bh.debit, plan.first_payment_amount)

        fake_now = datetime.datetime.combine(mrp.next_payment_date, datetime.time())
        with patched_context(datetime.datetime, "now", Fake().is_callable().returns(fake_now)):
            call_command("rent", "recurring_billing")
        call_command("rent", "recurring_billing")
        mrp = MemberRentalPlan.objects.all()[0]
        self.assertEqual(mrp.rental_plan.slug, "unlimited1")
        self.assertEqual(BillingHistory.objects.count(), 2)
        _bh = BillingHistory.objects.all()[0]
        self.assertEqual(_bh.debit, new_plan.thereafter_payments_amount)
예제 #3
0
 def done(self, form_list, **kwargs):
     old_member_rental_plan = self.request.user.get_profile().member_rental_plan
     new_rental_plan = self.get_all_cleaned_data()['rental_plan']
     change_plan(old_member_rental_plan, new_rental_plan)
     is_upgrade = old_member_rental_plan.rental_plan.is_upgrade(new_rental_plan)
     if is_upgrade:
         plan_starts = "now"
         add_deferred_message(
             self.request,
             messages.INFO,
             "You have successfully changed your plan to %s" %
                 new_rental_plan.description2
         )
     else:
         plan_starts = old_member_rental_plan.next_payment_date
         add_deferred_message(
             self.request,
             messages.INFO,
             "Your plan will be changed to %s on %s" %
                 (new_rental_plan.description2, plan_starts)
         )
     return JsonResponse({'redirect_to': reverse("new_rent:change_plan")})