Test cases
diff --git a/erpnext/accounts/report/sales_payment_summary/test_sales_payment_summary.py b/erpnext/accounts/report/sales_payment_summary/test_sales_payment_summary.py
new file mode 100644
index 0000000..58c7784
--- /dev/null
+++ b/erpnext/accounts/report/sales_payment_summary/test_sales_payment_summary.py
@@ -0,0 +1,117 @@
+# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import unittest
+import frappe
+import erpnext
+from erpnext.accounts.report.sales_payment_summary.sales_payment_summary import get_mode_of_payments, get_mode_of_payment_details
+from frappe.utils import nowdate
+from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
+
+test_dependencies = ["Sales Invoice"]
+
+class TestSalesPaymentSummary(unittest.TestCase):
+	def setUp(self):
+		pass
+
+	def tearDown(self):
+		pass
+
+	def test_get_mode_of_payments(self):
+		si = frappe.get_all("Sales Invoice", fields=["name", "docstatus"])
+		filters = get_filters()
+
+		for invoice in si[:2]:
+			doc = frappe.get_doc("Sales Invoice", invoice.name)
+			new_doc = frappe.copy_doc(doc)
+			new_doc.insert()
+			new_doc.submit()
+			try:
+				new_doc.submit()
+			except Exception as e:
+				pass
+
+			if int(new_doc.name[-3:])%2 == 0:
+				bank_account = "_Test Cash - _TC"
+				mode_of_payment = "Cash"
+			else:
+				bank_account = "_Test Bank - _TC"
+				mode_of_payment = "Credit Card"
+
+			pe = get_payment_entry("Sales Invoice", new_doc.name, bank_account=bank_account)
+			pe.reference_no = "_Test"
+			pe.reference_date = nowdate()
+			pe.mode_of_payment = mode_of_payment
+			pe.insert()
+			pe.submit()
+
+		mop = get_mode_of_payments(filters)
+		self.assertTrue('Credit Card' in mop.values()[0])
+		self.assertTrue('Cash' in mop.values()[0])
+
+		# Cancel all Cash payment entry and check if this mode of payment is still fetched.
+		payment_entries = frappe.get_all("Payment Entry", filters={"mode_of_payment": "Cash", "docstatus": 1}, fields=["name", "docstatus"])
+		for payment_entry in payment_entries:
+			pe = frappe.get_doc("Payment Entry", payment_entry.name)
+			pe.cancel()
+
+		mop = get_mode_of_payments(filters)
+		self.assertTrue('Credit Card' in mop.values()[0])
+		self.assertTrue('Cash' not in mop.values()[0])
+
+	def test_get_mode_of_payments_details(self):
+		si = frappe.get_all("Sales Invoice", fields=["name", "docstatus"])
+		filters = get_filters()
+
+		for invoice in si[:2]:
+			doc = frappe.get_doc("Sales Invoice", invoice.name)
+			new_doc = frappe.copy_doc(doc)
+			new_doc.insert()
+			new_doc.submit()
+			try:
+				new_doc.submit()
+			except Exception as e:
+				pass
+
+			if int(new_doc.name[-3:])%2 == 0:
+				bank_account = "_Test Cash - _TC"
+				mode_of_payment = "Cash"
+			else:
+				bank_account = "_Test Bank - _TC"
+				mode_of_payment = "Credit Card"
+
+			pe = get_payment_entry("Sales Invoice", new_doc.name, bank_account=bank_account)
+			pe.reference_no = "_Test"
+			pe.reference_date = nowdate()
+			pe.mode_of_payment = mode_of_payment
+			pe.insert()
+			pe.submit()
+
+		mopd = get_mode_of_payment_details(filters)
+
+		mopd_values = mopd.values()[0]
+		for mopd_value in mopd_values:
+			if mopd_value[0] == "Credit Card":
+				cc_init_amount = mopd_value[1]
+
+		# Cancel one Credit Card Payment Entry and check that it is not fetched in mode of payment details.
+		payment_entries = frappe.get_all("Payment Entry", filters={"mode_of_payment": "Credit Card", "docstatus": 1}, fields=["name", "docstatus"])
+		for payment_entry in payment_entries[:1]:
+			pe = frappe.get_doc("Payment Entry", payment_entry.name)
+			pe.cancel()
+
+		mopd = get_mode_of_payment_details(filters)
+		mopd_values = mopd.values()[0]
+		for mopd_value in mopd_values:
+			if mopd_value[0] == "Credit Card":
+				cc_final_amount = mopd_value[1]
+
+		self.assertTrue(cc_init_amount > cc_final_amount)
+
+def get_filters():
+	return {
+		"from_date": "1900-01-01",
+		"to_date": nowdate(),
+		"company": "_Test Company"
+	}
\ No newline at end of file