|
@@ -1,12 +1,79 @@
|
|
|
|
|
|
|
|
+import datetime
|
|
from django.test import TestCase, Client
|
|
from django.test import TestCase, Client
|
|
from coin.members.tests import MemberTestsUtils
|
|
from coin.members.tests import MemberTestsUtils
|
|
from coin.members.models import Member, LdapUser
|
|
from coin.members.models import Member, LdapUser
|
|
from coin.billing.models import Invoice
|
|
from coin.billing.models import Invoice
|
|
|
|
+from coin.offers.models import Offer, Service, OfferSubscription
|
|
|
|
+from coin.billing.create_subscriptions_invoices import create_invoice_for_a_period
|
|
|
|
|
|
|
|
+class BillingInvoiceCreationTests(TestCase):
|
|
|
|
|
|
-
|
|
+ def test_subscription_cant_be_charged_twice(self):
|
|
-class BillingTests(TestCase):
|
|
+ """
|
|
|
|
+ Test qu'un abonnement ne peut pas être facturé deux fois pendant une
|
|
|
|
+ période
|
|
|
|
+ """
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ service = Service(name='ServiceTest')
|
|
|
|
+ service.save()
|
|
|
|
+ offer = Offer(name='Offre', billing_period=3, period_fees=30,
|
|
|
|
+ initial_fees=0, service=service)
|
|
|
|
+ offer.save()
|
|
|
|
+
|
|
|
|
+ ldap_cn = MemberTestsUtils.get_random_ldap_cn()
|
|
|
|
+ member = Member(first_name = 'Balthazar', last_name = 'Picsou',
|
|
|
|
+ ldap_cn = ldap_cn)
|
|
|
|
+ member.save()
|
|
|
|
+
|
|
|
|
+ subscription = OfferSubscription(
|
|
|
|
+ subscription_date=datetime.date(2014,1,1),
|
|
|
|
+ member=member,
|
|
|
|
+ offer=offer)
|
|
|
|
+ subscription.save()
|
|
|
|
+
|
|
|
|
+ invoice = Invoice(member=member)
|
|
|
|
+ invoice.save()
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ invoice.details.create(label=offer.name,
|
|
|
|
+ amount=offer.period_fees,
|
|
|
|
+ offer=offer,
|
|
|
|
+ period_from=datetime.date(2014,1,1),
|
|
|
|
+ period_to=datetime.date(2014,3,31))
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ invoice.details.create(label=offer.name,
|
|
|
|
+ amount=offer.period_fees,
|
|
|
|
+ offer=offer,
|
|
|
|
+ period_from=datetime.date(2014,6,1),
|
|
|
|
+ period_to=datetime.date(2014,8,31))
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ invoice_test_1 = create_invoice_for_a_period(member,
|
|
|
|
+ datetime.date(2014,2,1))
|
|
|
|
+ self.assertEqual(invoice_test_1, None)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ invoice_test_2 = create_invoice_for_a_period(member,
|
|
|
|
+ datetime.date(2014,4,1))
|
|
|
|
+ self.assertEqual(invoice_test_2.details.first().period_from,
|
|
|
|
+ datetime.date(2014,4,1))
|
|
|
|
+ self.assertEqual(invoice_test_2.details.first().period_to,
|
|
|
|
+ datetime.date(2014,5,31))
|
|
|
|
+
|
|
|
|
+ LdapUser.objects.get(pk=ldap_cn).delete();
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class BillingPDFTests(TestCase):
|
|
|
|
|
|
def test_download_invoice_pdf_return_a_pdf(self):
|
|
def test_download_invoice_pdf_return_a_pdf(self):
|
|
"""
|
|
"""
|