adds test cases and fix resulting bugs
diff --git a/erpnext/accounts/doctype/subscriptions/subscriptions.py b/erpnext/accounts/doctype/subscriptions/subscriptions.py
index d2bda3d..6b6fc5f 100644
--- a/erpnext/accounts/doctype/subscriptions/subscriptions.py
+++ b/erpnext/accounts/doctype/subscriptions/subscriptions.py
@@ -28,7 +28,10 @@
self.current_invoice_start = self.trial_period_start
def set_current_invoice_end(self):
- self.current_invoice_end = get_last_day(self.current_invoice_start)
+ if self.is_trialling():
+ self.current_invoice_end = self.trial_period_end
+ else:
+ self.current_invoice_end = get_last_day(self.current_invoice_start)
def before_save(self):
self.set_status()
diff --git a/erpnext/accounts/doctype/subscriptions/test_subscriptions.py b/erpnext/accounts/doctype/subscriptions/test_subscriptions.py
index 27f67e4..65c9423 100644
--- a/erpnext/accounts/doctype/subscriptions/test_subscriptions.py
+++ b/erpnext/accounts/doctype/subscriptions/test_subscriptions.py
@@ -5,6 +5,57 @@
import frappe
import unittest
+from frappe.utils.data import nowdate, add_days, get_last_day
+
class TestSubscriptions(unittest.TestCase):
- pass
+ def create_plan(self):
+ if not frappe.db.exists('Subscription Plan', '_Test Plan Name'):
+ plan = frappe.new_doc('Subscription Plan')
+ plan.plan_name = '_Test Plan Name'
+ plan.item = '_Test Non Stock Item'
+ plan.cost = 999.99
+ plan.billing_interval = 'Month'
+ plan.billing_interval_count = 1
+ plan.insert()
+
+ def create_subscriber(self):
+ if not frappe.db.exists('Subscriber', '_Test Customer'):
+ subscriber = frappe.new_doc('Subscriber')
+ subscriber.subscriber_name = '_Test Customer'
+ subscriber.customer = '_Test Customer'
+ subscriber.insert()
+
+ def setUp(self):
+ self.create_plan()
+ self.create_subscriber()
+
+ def test_create_subscription_with_trial_with_correct_period(self):
+ subscription = frappe.new_doc('Subscriptions')
+ subscription.subscriber = '_Test Customer'
+ subscription.trial_period_start = nowdate()
+ subscription.trial_period_end = add_days(nowdate(), 30)
+ subscription.append('plans', {'plan': '_Test Plan Name'})
+ subscription.save()
+
+ self.assertEqual(subscription.trial_period_start, nowdate())
+ self.assertEqual(subscription.trial_period_end, add_days(nowdate(), 30))
+ self.assertEqual(subscription.trial_period_start, subscription.current_invoice_start)
+ self.assertEqual(subscription.trial_period_end, subscription.current_invoice_end)
+ self.assertEqual(subscription.invoices, [])
+
+ subscription.delete()
+
+ def test_create_subscription_without_trial_with_correct_period(self):
+ subscription = frappe.new_doc('Subscriptions')
+ subscription.subscriber = '_Test Customer'
+ subscription.append('plans', {'plan': '_Test Plan Name'})
+ subscription.save()
+
+ self.assertEqual(subscription.trial_period_start, None)
+ self.assertEqual(subscription.trial_period_end, None)
+ self.assertEqual(subscription.current_invoice_start, nowdate())
+ self.assertEqual(subscription.current_invoice_end, get_last_day(nowdate()))
+ self.assertEqual(len(subscription.invoices), 1)
+
+ subscription.delete()
\ No newline at end of file