test(membership): add test for invoicing and validation
This commit is contained in:
parent
286ec04197
commit
c04321e645
@ -86,6 +86,20 @@ class Membership(Document):
|
||||
invoice = make_invoice(self, member, plan, settings)
|
||||
self.invoice = invoice.name
|
||||
|
||||
if with_payment_entry:
|
||||
if not settings.payment_account:
|
||||
frappe.throw(_("You need to set <b>Payment Account</b> in Membership Settings"))
|
||||
|
||||
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
|
||||
frappe.flags.ignore_account_permission=True
|
||||
pe = get_payment_entry(dt='Sales Invoice', dn=invoice.name, bank_amount=invoice.grand_total)
|
||||
frappe.flags.ignore_account_permission=False
|
||||
pe.paid_to = settings.payment_account
|
||||
pe.reference_no = self.name
|
||||
pe.reference_date = getdate()
|
||||
pe.save(ignore_permissions=True)
|
||||
pe.submit()
|
||||
|
||||
if save:
|
||||
self.save()
|
||||
|
||||
@ -97,7 +111,7 @@ class Membership(Document):
|
||||
frappe.throw(_("You need to enable <b>Send Acknowledge Email</b> in Membership Settings"))
|
||||
|
||||
member = frappe.get_doc("Member", self.member)
|
||||
|
||||
|
||||
if not member.email_id:
|
||||
frappe.throw(_("Email address of member {0} is missing").format(frappe.utils.get_link_to_form("Member", self.member)))
|
||||
|
||||
|
@ -3,7 +3,10 @@
|
||||
# See license.txt
|
||||
from __future__ import unicode_literals
|
||||
import unittest
|
||||
import frappe
|
||||
import erpnext
|
||||
from erpnext.non_profit.doctype.member.member import create_member
|
||||
from frappe.utils import nowdate, getdate, add_months
|
||||
from erpnext.stock.doctype.item.test_item import create_item
|
||||
|
||||
class TestMembership(unittest.TestCase):
|
||||
@ -21,15 +24,16 @@ class TestMembership(unittest.TestCase):
|
||||
settings.enable_invoicing = 1
|
||||
settings.make_payment_entry = 1
|
||||
settings.company = company.name
|
||||
settings.payment_to = company.default_cash_account
|
||||
settings.payment_account = company.default_cash_account
|
||||
settings.debit_account = company.default_receivable_account
|
||||
settings.save()
|
||||
|
||||
# make test plan
|
||||
plan = frappe.new_doc("Membership Type")
|
||||
plan.membership_type = "_rzpy_test_milythm"
|
||||
plan.amount = 100
|
||||
plan.razorpay_plan_id = "_rzpy_test_milythm"
|
||||
plan.linked_item = create_item("_Test Item for Non Profit Membership")
|
||||
plan.linked_item = create_item("_Test Item for Non Profit Membership").name
|
||||
plan.insert()
|
||||
|
||||
# make test member
|
||||
@ -38,15 +42,71 @@ class TestMembership(unittest.TestCase):
|
||||
'email': "_test_member_erpnext@example.com",
|
||||
'plan_id': plan.name
|
||||
}))
|
||||
self.member_doc.make_customer_and_link()
|
||||
self.member = "self.member_doc.name"
|
||||
|
||||
def test_auto_generate_invoice_and_payment_entry(self):
|
||||
pass
|
||||
entry = make_membership(self.member)
|
||||
|
||||
def test_renew within_30_days(self):
|
||||
pass
|
||||
# Naive test to see if at all invoice was generated and attached to member
|
||||
# In any case if details were missing, the invoicing would throw an error
|
||||
invoice = entry.generate_invoice(save=True)
|
||||
self.assertEqual(invoice.name, entry.invoice)
|
||||
# entry.delete()
|
||||
|
||||
def test_from_to_dates(self):
|
||||
pass
|
||||
# # Remove customer
|
||||
# old_customer = self.member_doc.customer
|
||||
# self.member_doc.customer = None
|
||||
# self.member_doc.save()
|
||||
|
||||
def test_razorpay_webook(self):
|
||||
pass
|
||||
# entry = make_membership(self.member)
|
||||
# self.assertRaises(frappe.ValidationError, entry.generate_invoice)
|
||||
|
||||
# # Add customer value back
|
||||
# self.member_doc.customer = old_customer
|
||||
# self.member_doc.save()
|
||||
|
||||
# # Remove company
|
||||
# set_config(company, None)
|
||||
# self.assertRaises(frappe.ValidationError, entry.generate_invoice)
|
||||
|
||||
def test_renew_within_30_days(self):
|
||||
# create a membership for two months
|
||||
# Should work fine
|
||||
make_membership(self.member, { "from_date": nowdate() })
|
||||
make_membership(self.member, { "from_date": add_months(nowdate(), 1) })
|
||||
|
||||
from frappe.utils.user import add_role
|
||||
add_role("test@example.com", "Non Profit Manager")
|
||||
frappe.set_user("test@example.com")
|
||||
|
||||
# create next membership with expiry not within 30 days
|
||||
self.assertRaises(frappe.ValidationError, make_membership, self.member, {
|
||||
"from_date": add_months(nowdate(), 2),
|
||||
})
|
||||
|
||||
frappe.set_user("Administrator")
|
||||
# create the same membership but as administrator
|
||||
new_entry = make_membership(self.member, {
|
||||
"from_date": add_months(nowdate(), 2),
|
||||
"to_date": add_months(nowdate(), 3),
|
||||
})
|
||||
|
||||
def set_config(key, value):
|
||||
frappe.db.set_value("Membership Settings", None, key, value)
|
||||
|
||||
def make_membership(member, payload={}):
|
||||
data = {
|
||||
"doctype": "Membership",
|
||||
"member": member,
|
||||
"membership_status": "Current",
|
||||
"membership_type": "_rzpy_test_milythm",
|
||||
"currency": "INR",
|
||||
"paid": 1,
|
||||
"from_date": nowdate(),
|
||||
"amount": 100
|
||||
}
|
||||
data.update(payload)
|
||||
membership = frappe.get_doc(data)
|
||||
membership.insert(ignore_permissions=True, ignore_if_duplicate=True)
|
||||
return membership
|
Loading…
x
Reference in New Issue
Block a user