From 4d8175f9d9dab4606cfaec2c1fffee9c9933b800 Mon Sep 17 00:00:00 2001 From: tundebabzy Date: Mon, 26 Feb 2018 18:56:05 +0100 Subject: [PATCH] adds test cases and fix resulting bugs --- .../doctype/subscriptions/subscriptions.py | 5 +- .../subscriptions/test_subscriptions.py | 53 ++++++++++++++++++- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/erpnext/accounts/doctype/subscriptions/subscriptions.py b/erpnext/accounts/doctype/subscriptions/subscriptions.py index d2bda3d04f..6b6fc5ff98 100644 --- a/erpnext/accounts/doctype/subscriptions/subscriptions.py +++ b/erpnext/accounts/doctype/subscriptions/subscriptions.py @@ -28,7 +28,10 @@ class Subscriptions(Document): 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 27f67e44f3..65c942339c 100644 --- a/erpnext/accounts/doctype/subscriptions/test_subscriptions.py +++ b/erpnext/accounts/doctype/subscriptions/test_subscriptions.py @@ -5,6 +5,57 @@ from __future__ import unicode_literals 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