Esempio n. 1
0
 def test_sending(self):
     settings.BILLING_CC_EMAIL = None
     makebills()
     self.assertEquals(len(mail.outbox), 1)
     m = mail.outbox[0]
     self.assertEquals(m.to[0], self.membership.billing_email())
     self.assertEquals(m.from_email, settings.BILLING_FROM_EMAIL)
Esempio n. 2
0
    def test_no_email_if_membership_fee_zero(self):
        membership = create_dummy_member('N', type='H')
        self.assertEqual(len(mail.outbox), 0)
        membership.preapprove(self.user)
        self.assertEqual(len(mail.outbox), 1)
        mail.outbox = []

        membership.approve(self.user)
        makebills()
        bill = Bill.objects.latest('id')
        self.assertEquals(bill.billingcycle.sum, Decimal('0'))

        from models import logger as models_logger
        models_logger.setLevel(level=logging.INFO)
        handler = MockLoggingHandler()
        models_logger.addHandler(handler)

        bill.send_as_email()
        self.assertTrue(bill.billingcycle.is_paid)
        self.assertEqual(len(mail.outbox), 0)

        models_logger.removeHandler(handler)
        infos = handler.messages["info"]
        properly_logged = False
        for info in infos:
            if "Bill not sent:" in info:
                properly_logged = True
        self.assertTrue(properly_logged)
Esempio n. 3
0
 def test_fees(self):
     "Test setting fees and verify that they are set properly"
     now = datetime.now() - timedelta(seconds=5)
     week_ago = datetime.now() - timedelta(days=7)
     P_FEE = 30
     S_FEE = 500
     O_FEE = 60
     H_FEE = 0
     soon = datetime.now() + timedelta(hours=1)
     # Old fees
     Fee.objects.create(type='P', start=week_ago, sum=P_FEE / 2)
     Fee.objects.create(type='O', start=week_ago, sum=O_FEE / 2)
     Fee.objects.create(type='S', start=week_ago, sum=S_FEE / 2)
     Fee.objects.create(type='H', start=week_ago, sum=H_FEE / 2)
     # Real fees
     p_fee = Fee.objects.create(type='P', start=now, sum=P_FEE)
     o_fee = Fee.objects.create(type='O', start=now, sum=O_FEE)
     s_fee = Fee.objects.create(type='S', start=now, sum=S_FEE)
     h_fee = Fee.objects.create(type='H', start=now, sum=H_FEE)
     # Future fees that must not interfere
     Fee.objects.create(type='P', start=soon, sum=P_FEE * 2)
     Fee.objects.create(type='O', start=soon, sum=O_FEE * 2)
     Fee.objects.create(type='S', start=soon, sum=S_FEE * 2)
     Fee.objects.create(type='H', start=soon, sum=H_FEE * 2)
     makebills()
     c_p = BillingCycle.objects.get(membership__type='P')
     c_o = BillingCycle.objects.get(membership__type='O')
     c_s = BillingCycle.objects.get(membership__type='S')
     c_h = BillingCycle.objects.get(membership__type='H')
     self.assertEqual(c_p.sum, P_FEE)
     self.assertEqual(c_o.sum, O_FEE)
     self.assertEqual(c_s.sum, S_FEE)
     self.assertEqual(c_h.sum, H_FEE)
Esempio n. 4
0
 def test_fees(self):
     "Test setting fees and verify that they are set properly"
     now = datetime.now() - timedelta(seconds=5)
     week_ago = datetime.now() - timedelta(days=7)
     P_FEE=30
     S_FEE=500
     O_FEE=60
     H_FEE=0
     soon = datetime.now() + timedelta(hours=1)
     # Old fees
     Fee.objects.create(type='P', start=week_ago, sum=P_FEE/2)
     Fee.objects.create(type='O', start=week_ago, sum=O_FEE/2)
     Fee.objects.create(type='S', start=week_ago, sum=S_FEE/2)
     Fee.objects.create(type='H', start=week_ago, sum=H_FEE/2)
     # Real fees
     p_fee = Fee.objects.create(type='P', start=now, sum=P_FEE)
     o_fee = Fee.objects.create(type='O', start=now, sum=O_FEE)
     s_fee = Fee.objects.create(type='S', start=now, sum=S_FEE)
     h_fee = Fee.objects.create(type='H', start=now, sum=H_FEE)
     # Future fees that must not interfere
     Fee.objects.create(type='P', start=soon, sum=P_FEE*2)
     Fee.objects.create(type='O', start=soon, sum=O_FEE*2)
     Fee.objects.create(type='S', start=soon, sum=S_FEE*2)
     Fee.objects.create(type='H', start=soon, sum=H_FEE*2)
     makebills()
     c_p = BillingCycle.objects.get(membership__type='P')
     c_o = BillingCycle.objects.get(membership__type='O')
     c_s = BillingCycle.objects.get(membership__type='S')
     c_h = BillingCycle.objects.get(membership__type='H')
     self.assertEqual(c_p.sum, P_FEE)
     self.assertEqual(c_o.sum, O_FEE)
     self.assertEqual(c_s.sum, S_FEE)
     self.assertEqual(c_h.sum, H_FEE)
Esempio n. 5
0
 def test_sending(self):
     settings.BILLING_CC_EMAIL = None
     makebills()
     self.assertEquals(len(mail.outbox), 1)
     m = mail.outbox[0]
     self.assertEquals(m.to[0], self.membership.billing_email())
     self.assertEquals(m.from_email, settings.BILLING_FROM_EMAIL)
Esempio n. 6
0
    def test_no_email_if_membership_fee_zero(self):
        membership = create_dummy_member('N', type='H')
        self.assertEqual(len(mail.outbox), 0)
        membership.preapprove(self.user)
        self.assertEqual(len(mail.outbox), 1)
        mail.outbox = []

        membership.approve(self.user)
        makebills()
        bill = Bill.objects.latest('id')
        self.assertEquals(bill.billingcycle.sum, Decimal('0'))

        from models import logger as models_logger
        models_logger.setLevel(level=logging.INFO)
        handler = MockLoggingHandler()
        models_logger.addHandler(handler)

        bill.send_as_email()
        self.assertTrue(bill.billingcycle.is_paid)
        self.assertEqual(len(mail.outbox), 0)

        models_logger.removeHandler(handler)
        infos = handler.messages["info"]
        properly_logged = False
        for info in infos:
            if "Bill not sent:" in info:
                properly_logged = True
        self.assertTrue(properly_logged)
Esempio n. 7
0
 def test_sending_with_cc(self):
     settings.BILLING_CC_EMAIL = "*****@*****.**"
     makebills()
     self.assertEquals(len(mail.outbox), 1)
     m = mail.outbox[0]
     self.assertEquals(m.to[0], self.membership.billing_email())
     self.assertEquals(m.from_email, settings.BILLING_FROM_EMAIL)
     self.assertEquals(m.extra_headers['CC'], settings.BILLING_CC_EMAIL)
     self.assertTrue(settings.BILLING_CC_EMAIL in m.bcc)
Esempio n. 8
0
 def test_sending_with_cc(self):
     settings.BILLING_CC_EMAIL = "*****@*****.**"
     makebills()
     self.assertEquals(len(mail.outbox), 1)
     m = mail.outbox[0]
     self.assertEquals(m.to[0], self.membership.billing_email())
     self.assertEquals(m.from_email, settings.BILLING_FROM_EMAIL)
     self.assertEquals(m.extra_headers['CC'], settings.BILLING_CC_EMAIL)
     self.assertTrue(settings.BILLING_CC_EMAIL in m.bcc)
Esempio n. 9
0
 def setUp(self):
     self.user = User.objects.get(id=1)
     membership = create_dummy_member('N')
     membership.preapprove(self.user)
     membership.approve(self.user)
     self.membership = membership
     makebills()
     self.cycle = BillingCycle.objects.get(membership=self.membership)
     self.bill = self.cycle.bill_set.order_by('due_date')[0]
     settings.ENABLE_REMINDERS = True
Esempio n. 10
0
 def setUp(self):
     self.user = User.objects.get(id=1)
     membership = create_dummy_member('N')
     membership.preapprove(self.user)
     membership.approve(self.user)
     self.membership = membership
     makebills()
     self.cycle = BillingCycle.objects.get(membership=self.membership)
     self.bill = self.cycle.bill_set.order_by('due_date')[0]
     settings.ENABLE_REMINDERS = True
Esempio n. 11
0
    def test_expired_cycle(self):
        "makebills: before a cycle expires, a new one is created"
        cycle = create_billingcycle(self.membership)
        cycle.starts = datetime.now() - timedelta(days=365)
        cycle.ends = datetime.now() + timedelta(days=27)
        cycle.save()

        makebills()

        self.assertEquals(len(mail.outbox), 1)
        self.assertFalse(cycle.last_bill().is_reminder())
Esempio n. 12
0
    def test_single_preapproved_no_op(self):
        "makebills: preapproved membership no-op"
        membership = create_dummy_member('N')
        membership.preapprove(self.user)
        mail.outbox = []
        makebills()

        self.assertEqual(len(mail.outbox), 0)
        cycles = membership.billingcycle_set.all()
        self.assertEqual(len(cycles), 0)
        membership.delete()
Esempio n. 13
0
    def test_single_preapproved_no_op(self):
        "makebills: preapproved membership no-op"
        membership = create_dummy_member('N')
        membership.preapprove(self.user)
        mail.outbox = []
        makebills()

        self.assertEqual(len(mail.outbox), 0)
        cycles = membership.billingcycle_set.all()
        self.assertEqual(len(cycles), 0)
        membership.delete()
Esempio n. 14
0
    def test_expired_cycle(self):
        "makebills: before a cycle expires, a new one is created"
        cycle = create_billingcycle(self.membership)
        cycle.starts = datetime.now() - timedelta(days=365)
        cycle.ends = datetime.now() + timedelta(days=27)
        cycle.save()

        makebills()

        self.assertEquals(len(mail.outbox), 1)
        self.assertFalse(cycle.last_bill().is_reminder())
Esempio n. 15
0
    def test_approved_cycle_and_bill_creation(self):
        "makebills: cycle and bill creation"
        makebills()

        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(len(self.membership.billingcycle_set.all()), 1)

        membership2 = create_dummy_member('N')
        membership2.preapprove(self.user)
        membership2.approve(self.user)
        mail.outbox = []
        makebills()

        self.assertEqual(len(membership2.billingcycle_set.all()), 1)
        self.assertEqual(len(mail.outbox), 1)

        c = membership2.billingcycle_set.all()[0]
        self.assertEqual(c.bill_set.count(), 1)
        self.assertEqual(c.last_bill().reminder_count, 0)
Esempio n. 16
0
    def test_approved_cycle_and_bill_creation(self):
        "makebills: cycle and bill creation"
        makebills()

        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(len(self.membership.billingcycle_set.all()), 1)

        membership2 = create_dummy_member('N')
        membership2.preapprove(self.user)
        membership2.approve(self.user)
        mail.outbox = []
        makebills()

        self.assertEqual(len(membership2.billingcycle_set.all()), 1)
        self.assertEqual(len(mail.outbox), 1)

        c = membership2.billingcycle_set.all()[0]
        self.assertEqual(c.bill_set.count(), 1)
        self.assertEqual(c.last_bill().reminder_count, 0)
Esempio n. 17
0
    def test_new_billing_cycle_with_previous_paid(self):
        "makebills: new billing cycle with previous already paid"
        m = self.membership

        makebills()
        self.assertEqual(len(m.billingcycle_set.all()), 1)
        self.assertEqual(len(mail.outbox), 1)

        c = m.billingcycle_set.all()[0]
        c.end = datetime.now() + timedelta(days=5)
        c.save()
        b = c.last_bill()
        b.due_date = datetime.now() + timedelta(days=9)
        b.save()
        b.billingcycle.is_paid = True
        b.billingcycle.save()

        makebills()

        self.assertTrue(len(m.billingcycle_set.all()), 2)
        self.assertEqual(len(mail.outbox), 2)
Esempio n. 18
0
    def test_new_billing_cycle_with_previous_paid(self):
        "makebills: new billing cycle with previous already paid"
        m = self.membership

        makebills()
        self.assertEqual(len(m.billingcycle_set.all()), 1)
        self.assertEqual(len(mail.outbox), 1)

        c = m.billingcycle_set.all()[0]
        c.end = datetime.now() + timedelta(days=5)
        c.save()
        b = c.last_bill()
        b.due_date = datetime.now() + timedelta(days=9)
        b.save()
        b.billingcycle.is_paid = True
        b.billingcycle.save()

        makebills()

        self.assertTrue(len(m.billingcycle_set.all()), 2)
        self.assertEqual(len(mail.outbox), 2)
Esempio n. 19
0
    def test_no_cycle_created(self):
        "makebills: no cycles after an expired membership, should log a warning"
        m = self.membership
        makebills()

        c = m.billingcycle_set.all()[0]
        c.end = datetime.now() - timedelta(hours=1)
        c.save()

        handler = MockLoggingHandler()
        makebills_logger.addHandler(handler)
        makebills()
        makebills_logger.removeHandler(handler)

        warnings = handler.messages["warning"]
        self.assertTrue(len(warnings) > 0)

        logged = False
        for warning in warnings:
            if "no new billing cycle created for" in warning:
                logged = True
                break

        self.assertTrue(logged)
Esempio n. 20
0
    def test_no_cycle_created(self):
        "makebills: no cycles after an expired membership, should log a warning"
        m = self.membership
        makebills()

        c = m.billingcycle_set.all()[0]
        c.end = datetime.now() - timedelta(hours=1)
        c.save()

        handler = MockLoggingHandler()
        makebills_logger.addHandler(handler)
        makebills()
        makebills_logger.removeHandler(handler)

        warnings = handler.messages["warning"]
        self.assertTrue(len(warnings) > 0)

        logged = False
        for warning in warnings:
            if "no new billing cycle created for" in warning:
                logged = True
                break

        self.assertTrue(logged)