fix the test case for the payroll (#14480)

* fix the test case for the payroll

* fix the shopify and stock entry

* more structured test cases for payroll
diff --git a/erpnext/erpnext_integrations/doctype/shopify_settings/test_data/custom_field.json b/erpnext/erpnext_integrations/doctype/shopify_settings/test_data/custom_field.json
new file mode 100644
index 0000000..db6c3d5
--- /dev/null
+++ b/erpnext/erpnext_integrations/doctype/shopify_settings/test_data/custom_field.json
@@ -0,0 +1,527 @@
+[
+ {
+  "allow_on_submit": 0, 
+  "collapsible": 0, 
+  "collapsible_depends_on": null, 
+  "default": null, 
+  "depends_on": null, 
+  "description": null, 
+  "docstatus": 0, 
+  "doctype": "Custom Field", 
+  "dt": "Print Settings", 
+  "fieldname": "compact_item_print", 
+  "fieldtype": "Check", 
+  "hidden": 0, 
+  "ignore_user_permissions": 0, 
+  "ignore_xss_filter": 0, 
+  "in_filter": 0, 
+  "in_list_view": 0, 
+  "insert_after": "with_letterhead", 
+  "label": "Compact Item Print", 
+  "modified": "2016-06-06 15:18:17.025602", 
+  "name": "Print Settings-compact_item_print", 
+  "no_copy": 0, 
+  "options": null, 
+  "permlevel": 0, 
+  "precision": "", 
+  "print_hide": 0, 
+  "print_hide_if_no_value": 0, 
+  "print_width": null, 
+  "read_only": 0, 
+  "report_hide": 0, 
+  "reqd": 0, 
+  "search_index": 0, 
+  "unique": 0, 
+  "width": null
+ }, 
+ {
+  "allow_on_submit": 0, 
+  "collapsible": 0, 
+  "collapsible_depends_on": null, 
+  "default": null, 
+  "depends_on": null, 
+  "description": null, 
+  "docstatus": 0, 
+  "doctype": "Custom Field", 
+  "dt": "Customer", 
+  "fieldname": "shopify_customer_id", 
+  "fieldtype": "Data", 
+  "hidden": 0, 
+  "ignore_user_permissions": 0, 
+  "ignore_xss_filter": 0, 
+  "in_filter": 0, 
+  "in_list_view": 0, 
+  "insert_after": "naming_series", 
+  "label": "Shopify Customer Id", 
+  "modified": "2016-01-15 17:25:28.991818", 
+  "name": "Customer-shopify_customer_id", 
+  "no_copy": 1, 
+  "options": null, 
+  "permlevel": 0, 
+  "precision": "", 
+  "print_hide": 1, 
+  "print_hide_if_no_value": 0, 
+  "print_width": null, 
+  "read_only": 1, 
+  "report_hide": 0, 
+  "reqd": 0, 
+  "search_index": 0, 
+  "unique": 0, 
+  "width": null
+ }, 
+ {
+  "allow_on_submit": 0, 
+  "collapsible": 0, 
+  "collapsible_depends_on": null, 
+  "default": null, 
+  "depends_on": null, 
+  "description": null, 
+  "docstatus": 0, 
+  "doctype": "Custom Field", 
+  "dt": "Address", 
+  "fieldname": "shopify_address_id", 
+  "fieldtype": "Data", 
+  "hidden": 0, 
+  "ignore_user_permissions": 0, 
+  "ignore_xss_filter": 0, 
+  "in_filter": 0, 
+  "in_list_view": 0, 
+  "insert_after": "fax", 
+  "label": "Shopify Address Id", 
+  "modified": "2016-01-15 17:50:52.213743", 
+  "name": "Address-shopify_address_id", 
+  "no_copy": 1, 
+  "options": null, 
+  "permlevel": 0, 
+  "precision": "", 
+  "print_hide": 1, 
+  "print_hide_if_no_value": 0, 
+  "print_width": null, 
+  "read_only": 1, 
+  "report_hide": 0, 
+  "reqd": 0, 
+  "search_index": 0, 
+  "unique": 0, 
+  "width": null
+ }, 
+ {
+  "allow_on_submit": 0, 
+  "collapsible": 0, 
+  "collapsible_depends_on": null, 
+  "default": null, 
+  "depends_on": null, 
+  "description": null, 
+  "docstatus": 0, 
+  "doctype": "Custom Field", 
+  "dt": "Sales Order", 
+  "fieldname": "shopify_order_id", 
+  "fieldtype": "Data", 
+  "hidden": 0, 
+  "ignore_user_permissions": 0, 
+  "ignore_xss_filter": 0, 
+  "in_filter": 0, 
+  "in_list_view": 0, 
+  "insert_after": "title", 
+  "label": "Shopify Order Id", 
+  "modified": "2016-01-18 09:55:50.764524", 
+  "name": "Sales Order-shopify_order_id", 
+  "no_copy": 1, 
+  "options": null, 
+  "permlevel": 0, 
+  "precision": "", 
+  "print_hide": 1, 
+  "print_hide_if_no_value": 0, 
+  "print_width": null, 
+  "read_only": 1, 
+  "report_hide": 0, 
+  "reqd": 0, 
+  "search_index": 0, 
+  "unique": 0, 
+  "width": null
+ }, 
+ {
+  "allow_on_submit": 0, 
+  "collapsible": 0, 
+  "collapsible_depends_on": null, 
+  "default": null, 
+  "depends_on": null, 
+  "description": null, 
+  "docstatus": 0, 
+  "doctype": "Custom Field", 
+  "dt": "Item", 
+  "fieldname": "shopify_product_id", 
+  "fieldtype": "Data", 
+  "hidden": 0, 
+  "ignore_user_permissions": 0, 
+  "ignore_xss_filter": 0, 
+  "in_filter": 0, 
+  "in_list_view": 0, 
+  "insert_after": "item_code", 
+  "label": "Shopify Product Id", 
+  "modified": "2016-01-19 15:44:16.132952", 
+  "name": "Item-shopify_product_id", 
+  "no_copy": 1, 
+  "options": null, 
+  "permlevel": 0, 
+  "precision": "", 
+  "print_hide": 1, 
+  "print_hide_if_no_value": 0, 
+  "print_width": null, 
+  "read_only": 1, 
+  "report_hide": 0, 
+  "reqd": 0, 
+  "search_index": 0, 
+  "unique": 0, 
+  "width": null
+ }, 
+ {
+  "allow_on_submit": 0, 
+  "collapsible": 0, 
+  "collapsible_depends_on": null, 
+  "default": null, 
+  "depends_on": null, 
+  "description": null, 
+  "docstatus": 0, 
+  "doctype": "Custom Field", 
+  "dt": "Sales Invoice", 
+  "fieldname": "shopify_order_id", 
+  "fieldtype": "Data", 
+  "hidden": 0, 
+  "ignore_user_permissions": 0, 
+  "ignore_xss_filter": 0, 
+  "in_filter": 0, 
+  "in_list_view": 0, 
+  "insert_after": "naming_series", 
+  "label": "Shopify Order Id", 
+  "modified": "2016-01-19 16:30:12.261797", 
+  "name": "Sales Invoice-shopify_order_id", 
+  "no_copy": 1, 
+  "options": null, 
+  "permlevel": 0, 
+  "precision": "", 
+  "print_hide": 1, 
+  "print_hide_if_no_value": 0, 
+  "print_width": null, 
+  "read_only": 1, 
+  "report_hide": 0, 
+  "reqd": 0, 
+  "search_index": 0, 
+  "unique": 0, 
+  "width": null
+ }, 
+ {
+  "allow_on_submit": 0, 
+  "collapsible": 0, 
+  "collapsible_depends_on": null, 
+  "default": null, 
+  "depends_on": null, 
+  "description": null, 
+  "docstatus": 0, 
+  "doctype": "Custom Field", 
+  "dt": "Delivery Note", 
+  "fieldname": "shopify_order_id", 
+  "fieldtype": "Data", 
+  "hidden": 0, 
+  "ignore_user_permissions": 0, 
+  "ignore_xss_filter": 0, 
+  "in_filter": 0, 
+  "in_list_view": 0, 
+  "insert_after": "title", 
+  "label": "Shopify Order Id", 
+  "modified": "2016-01-19 16:30:31.201198", 
+  "name": "Delivery Note-shopify_order_id", 
+  "no_copy": 1, 
+  "options": null, 
+  "permlevel": 0, 
+  "precision": "", 
+  "print_hide": 1, 
+  "print_hide_if_no_value": 0, 
+  "print_width": null, 
+  "read_only": 1, 
+  "report_hide": 0, 
+  "reqd": 0, 
+  "search_index": 0, 
+  "unique": 0, 
+  "width": null
+ }, 
+ {
+  "allow_on_submit": 0, 
+  "collapsible": 0, 
+  "collapsible_depends_on": null, 
+  "default": null, 
+  "depends_on": null, 
+  "description": null, 
+  "docstatus": 0, 
+  "doctype": "Custom Field", 
+  "dt": "Item", 
+  "fieldname": "stock_keeping_unit", 
+  "fieldtype": "Data", 
+  "hidden": 0, 
+  "ignore_user_permissions": 0, 
+  "ignore_xss_filter": 0, 
+  "in_filter": 0, 
+  "in_list_view": 0, 
+  "insert_after": "stock_uom", 
+  "label": "Stock Keeping Unit", 
+  "modified": "2015-11-10 09:29:10.854943", 
+  "name": "Item-stock_keeping_unit", 
+  "no_copy": 1, 
+  "options": null, 
+  "permlevel": 0, 
+  "precision": "", 
+  "print_hide": 0, 
+  "print_hide_if_no_value": 0, 
+  "print_width": null, 
+  "read_only": 1, 
+  "report_hide": 0, 
+  "reqd": 0, 
+  "search_index": 0, 
+  "unique": 0, 
+  "width": null
+ }, 
+ {
+  "allow_on_submit": 0, 
+  "collapsible": 0, 
+  "collapsible_depends_on": null, 
+  "default": "0", 
+  "depends_on": null, 
+  "description": null, 
+  "docstatus": 0, 
+  "doctype": "Custom Field", 
+  "dt": "Item", 
+  "fieldname": "sync_with_shopify", 
+  "fieldtype": "Check", 
+  "hidden": 0, 
+  "ignore_user_permissions": 0, 
+  "ignore_xss_filter": 0, 
+  "in_filter": 0, 
+  "in_list_view": 0, 
+  "insert_after": "is_stock_item", 
+  "label": "Sync With Shopify", 
+  "modified": "2015-10-12 15:54:31.997714", 
+  "name": "Item-sync_with_shopify", 
+  "no_copy": 0, 
+  "options": null, 
+  "permlevel": 0, 
+  "precision": "", 
+  "print_hide": 0, 
+  "print_hide_if_no_value": 0, 
+  "print_width": null, 
+  "read_only": 0, 
+  "report_hide": 0, 
+  "reqd": 0, 
+  "search_index": 0, 
+  "unique": 0, 
+  "width": null
+ }, 
+ {
+  "allow_on_submit": 0, 
+  "collapsible": 0, 
+  "collapsible_depends_on": null, 
+  "default": null, 
+  "depends_on": null, 
+  "description": null, 
+  "docstatus": 0, 
+  "doctype": "Custom Field", 
+  "dt": "Customer", 
+  "fieldname": "sync_with_shopify", 
+  "fieldtype": "Check", 
+  "hidden": 0, 
+  "ignore_user_permissions": 0, 
+  "ignore_xss_filter": 0, 
+  "in_filter": 0, 
+  "in_list_view": 0, 
+  "insert_after": "is_frozen", 
+  "label": "Sync With Shopify", 
+  "modified": "2015-10-01 17:31:55.758826", 
+  "name": "Customer-sync_with_shopify", 
+  "no_copy": 0, 
+  "options": null, 
+  "permlevel": 0, 
+  "precision": "", 
+  "print_hide": 0, 
+  "print_hide_if_no_value": 0, 
+  "print_width": null, 
+  "read_only": 0, 
+  "report_hide": 0, 
+  "reqd": 0, 
+  "search_index": 0, 
+  "unique": 0, 
+  "width": null
+ }, 
+ {
+  "allow_on_submit": 0, 
+  "collapsible": 0, 
+  "collapsible_depends_on": null, 
+  "default": null, 
+  "depends_on": null, 
+  "description": null, 
+  "docstatus": 0, 
+  "doctype": "Custom Field", 
+  "dt": "Item", 
+  "fieldname": "shopify_variant_id", 
+  "fieldtype": "Data", 
+  "hidden": 1, 
+  "ignore_user_permissions": 0, 
+  "ignore_xss_filter": 0, 
+  "in_filter": 0, 
+  "in_list_view": 0, 
+  "insert_after": "item_code", 
+  "label": "Variant Id", 
+  "modified": "2015-11-09 18:26:50.825858", 
+  "name": "Item-shopify_variant_id", 
+  "no_copy": 1, 
+  "options": null, 
+  "permlevel": 0, 
+  "precision": "", 
+  "print_hide": 1, 
+  "print_hide_if_no_value": 0, 
+  "print_width": null, 
+  "read_only": 1, 
+  "report_hide": 0, 
+  "reqd": 0, 
+  "search_index": 0, 
+  "unique": 0, 
+  "width": null
+ }, 
+ {
+  "allow_on_submit": 0, 
+  "collapsible": 0, 
+  "collapsible_depends_on": null, 
+  "default": null, 
+  "depends_on": null, 
+  "description": null, 
+  "docstatus": 0, 
+  "doctype": "Custom Field", 
+  "dt": "Item", 
+  "fieldname": "sync_qty_with_shopify", 
+  "fieldtype": "Check", 
+  "hidden": 0, 
+  "ignore_user_permissions": 0, 
+  "ignore_xss_filter": 0, 
+  "in_filter": 0, 
+  "in_list_view": 0, 
+  "insert_after": "item_code", 
+  "label": "Sync Quantity With Shopify", 
+  "modified": "2015-12-29 08:37:46.183295", 
+  "name": "Item-sync_qty_with_shopify", 
+  "no_copy": 0, 
+  "options": null, 
+  "permlevel": 0, 
+  "precision": "", 
+  "print_hide": 0, 
+  "print_hide_if_no_value": 0, 
+  "print_width": null, 
+  "read_only": 0, 
+  "report_hide": 0, 
+  "reqd": 0, 
+  "search_index": 0, 
+  "unique": 0, 
+  "width": null
+ }, 
+ {
+  "allow_on_submit": 0, 
+  "collapsible": 0, 
+  "collapsible_depends_on": null, 
+  "default": null, 
+  "depends_on": null, 
+  "description": null, 
+  "docstatus": 0, 
+  "doctype": "Custom Field", 
+  "dt": "Delivery Note", 
+  "fieldname": "shopify_fulfillment_id", 
+  "fieldtype": "Data", 
+  "hidden": 0, 
+  "ignore_user_permissions": 0, 
+  "ignore_xss_filter": 0, 
+  "in_filter": 0, 
+  "in_list_view": 0, 
+  "insert_after": "title", 
+  "label": "Shopify Fulfillment Id", 
+  "modified": "2016-01-20 23:50:35.609543", 
+  "name": "Delivery Note-shopify_fulfillment_id", 
+  "no_copy": 1, 
+  "options": null, 
+  "permlevel": 0, 
+  "precision": "", 
+  "print_hide": 1, 
+  "print_hide_if_no_value": 0, 
+  "print_width": null, 
+  "read_only": 1, 
+  "report_hide": 0, 
+  "reqd": 0, 
+  "search_index": 0, 
+  "unique": 0, 
+  "width": null
+ }, 
+ {
+  "allow_on_submit": 0, 
+  "collapsible": 0, 
+  "collapsible_depends_on": null, 
+  "default": null, 
+  "depends_on": null, 
+  "description": null, 
+  "docstatus": 0, 
+  "doctype": "Custom Field", 
+  "dt": "Supplier", 
+  "fieldname": "shopify_supplier_id", 
+  "fieldtype": "Data", 
+  "hidden": 1, 
+  "ignore_user_permissions": 0, 
+  "ignore_xss_filter": 0, 
+  "in_filter": 0, 
+  "in_list_view": 0, 
+  "insert_after": "supplier_name", 
+  "label": "Shopify Supplier Id", 
+  "modified": "2016-02-01 15:41:25.818306", 
+  "name": "Supplier-shopify_supplier_id", 
+  "no_copy": 1, 
+  "options": null, 
+  "permlevel": 0, 
+  "precision": "", 
+  "print_hide": 1, 
+  "print_hide_if_no_value": 0, 
+  "print_width": null, 
+  "read_only": 1, 
+  "report_hide": 0, 
+  "reqd": 0, 
+  "search_index": 0, 
+  "unique": 0, 
+  "width": null
+ }, 
+ {
+  "allow_on_submit": 0, 
+  "collapsible": 0, 
+  "collapsible_depends_on": null, 
+  "default": null, 
+  "depends_on": null, 
+  "description": null, 
+  "docstatus": 0, 
+  "doctype": "Custom Field", 
+  "dt": "Item", 
+  "fieldname": "shopify_description", 
+  "fieldtype": "Text Editor", 
+  "hidden": 0, 
+  "ignore_user_permissions": 0, 
+  "ignore_xss_filter": 0, 
+  "in_filter": 0, 
+  "in_list_view": 0, 
+  "insert_after": "section_break_11", 
+  "label": "shopify_description", 
+  "modified": "2016-06-15 12:15:36.325581", 
+  "name": "Item-shopify_description", 
+  "no_copy": 0, 
+  "options": null, 
+  "permlevel": 0, 
+  "precision": "", 
+  "print_hide": 1, 
+  "print_hide_if_no_value": 0, 
+  "print_width": null, 
+  "read_only": 0, 
+  "report_hide": 1, 
+  "reqd": 0, 
+  "search_index": 0, 
+  "unique": 0, 
+  "width": null
+ }
+]
\ No newline at end of file
diff --git a/erpnext/erpnext_integrations/doctype/shopify_settings/test_shopify_settings.py b/erpnext/erpnext_integrations/doctype/shopify_settings/test_shopify_settings.py
index cd1ab16..b983407 100644
--- a/erpnext/erpnext_integrations/doctype/shopify_settings/test_shopify_settings.py
+++ b/erpnext/erpnext_integrations/doctype/shopify_settings/test_shopify_settings.py
@@ -6,15 +6,20 @@
 
 import unittest, os, json
 from frappe.utils import cstr
-from frappe.utils.fixtures import sync_fixtures
 from erpnext.erpnext_integrations.connectors.shopify_connection import create_order
 from erpnext.erpnext_integrations.doctype.shopify_settings.sync_product import make_item
 from erpnext.erpnext_integrations.doctype.shopify_settings.sync_customer import create_customer
+from frappe.core.doctype.data_import.data_import import import_doc
+
 
 class ShopifySettings(unittest.TestCase):
 	def setUp(self):
 		frappe.set_user("Administrator")
-		sync_fixtures("erpnext_shopify")
+
+		# use the fixture data
+		import_doc(path=frappe.get_app_path("erpnext", "erpnext_integrations/doctype/shopify_settings/test_data/custom_field.json"),
+			ignore_links=True, overwrite=True)
+
 		frappe.reload_doctype("Customer")
 		frappe.reload_doctype("Sales Order")
 		frappe.reload_doctype("Delivery Note")
diff --git a/erpnext/hr/doctype/employee/test_employee.py b/erpnext/hr/doctype/employee/test_employee.py
index a2fed53..dfde030 100644
--- a/erpnext/hr/doctype/employee/test_employee.py
+++ b/erpnext/hr/doctype/employee/test_employee.py
@@ -4,6 +4,7 @@
 
 
 import frappe
+import erpnext
 import unittest
 import frappe.utils
 
@@ -32,3 +33,35 @@
 		self.assertTrue("Subject: Birthday Reminder for {0}".format(employee.employee_name) \
 			in email_queue[0].message)
 
+
+
+def make_employee(user):
+	if not frappe.db.get_value("User", user):
+		frappe.get_doc({
+			"doctype": "User",
+			"email": user,
+			"first_name": user,
+			"new_password": "password",
+			"roles": [{"doctype": "Has Role", "role": "Employee"}]
+		}).insert()
+
+	if not frappe.db.get_value("Employee", {"user_id": user}):
+		employee = frappe.get_doc({
+			"doctype": "Employee",
+			"naming_series": "EMP-",
+			"employee_name": user,
+			"company": erpnext.get_default_company(),
+			"user_id": user,
+			"date_of_birth": "1990-05-08",
+			"date_of_joining": "2013-01-01",
+			"department": frappe.get_all("Department", fields="name")[0].name,
+			"gender": "Female",
+			"company_email": user,
+			"prefered_contact_email": "Company Email",
+			"prefered_email": user,
+			"status": "Active",
+			"employment_type": "Intern"
+		}).insert()
+		return employee.name
+	else:
+		return frappe.get_value("Employee", {"employee_name":user}, "name")
diff --git a/erpnext/hr/doctype/payroll_entry/test_payroll_entry.py b/erpnext/hr/doctype/payroll_entry/test_payroll_entry.py
index 2a9d87c..e9cd55e 100644
--- a/erpnext/hr/doctype/payroll_entry/test_payroll_entry.py
+++ b/erpnext/hr/doctype/payroll_entry/test_payroll_entry.py
@@ -7,8 +7,21 @@
 from dateutil.relativedelta import relativedelta
 from erpnext.accounts.utils import get_fiscal_year, getdate, nowdate
 from erpnext.hr.doctype.payroll_entry.payroll_entry import get_start_end_dates, get_end_date
+from erpnext.hr.doctype.employee.test_employee import make_employee
+from erpnext.hr.doctype.salary_slip.test_salary_slip import get_salary_component_account, \
+		make_earning_salary_component, make_deduction_salary_component
+from erpnext.hr.doctype.salary_structure.test_salary_structure import make_salary_structure
+from erpnext.hr.doctype.loan.test_loan import create_loan
+
 
 class TestPayrollEntry(unittest.TestCase):
+	def setUp(self):
+		for dt in ["Salary Slip", "Salary Component", "Salary Component Account", "Payroll Entry", "Loan"]:
+			frappe.db.sql("delete from `tab%s`" % dt)
+
+		make_earning_salary_component(["Basic Salary", "Special Allowance", "HRA"])
+		make_deduction_salary_component(["Professional Tax", "TDS"])
+
 	def test_payroll_entry(self): # pylint: disable=no-self-use
 
 		for data in frappe.get_all('Salary Component', fields = ["name"]):
@@ -16,8 +29,9 @@
 				{'parent': data.name, 'company': erpnext.get_default_company()}, 'name'):
 				get_salary_component_account(data.name)
 
-		if not frappe.db.get_value("Salary Slip", {"start_date": "2016-11-01", "end_date": "2016-11-30"}):
-			make_payroll_entry()
+		dates = get_start_end_dates('Monthly', nowdate())
+		if not frappe.db.get_value("Salary Slip", {"start_date": dates.start_date, "end_date": dates.end_date}):
+			make_payroll_entry(start_date=dates.start_date, end_date=dates.end_date)
 
 	def test_get_end_date(self):
 		self.assertEqual(get_end_date('2017-01-01', 'monthly'), {'end_date': '2017-01-31'})
@@ -30,36 +44,12 @@
 		self.assertEqual(get_end_date('2017-02-15', 'daily'), {'end_date': '2017-02-15'})
 
 	def test_loan(self):
-		from erpnext.hr.doctype.salary_structure.test_salary_structure import (make_employee,
-			make_salary_structure)
-		from erpnext.hr.doctype.loan.test_loan import create_loan
 
 		branch = "Test Employee Branch"
 		applicant = make_employee("test_employee@loan.com")
 		company = erpnext.get_default_company()
 		holiday_list = make_holiday("test holiday for loan")
 
-		if not frappe.db.exists('Salary Component', 'Basic Salary'):
-			frappe.get_doc({
-				'doctype': 'Salary Component',
-				'salary_component': 'Basic Salary',
-				'salary_component_abbr': 'BS',
-				'type': 'Earning',
-				'accounts': [{
-					'company': company,
-					'default_account': frappe.db.get_value('Account',
-						{'company': company, 'root_type': 'Expense', 'account_type': ''}, 'name')
-				}]
-			}).insert()
-
-		if not frappe.db.get_value('Salary Component Account',
-			{'parent': 'Basic Salary', 'company': company}):
-			salary_component = frappe.get_doc('Salary Component', 'Basic Salary')
-			salary_component.append('accounts', {
-				'company': company,
-				'default_account': "Salary - " + frappe.db.get_value('Company', company, 'abbr')
-			})
-
 		company_doc = frappe.get_doc('Company', company)
 		if not company_doc.default_payroll_payable_account:
 			company_doc.default_payroll_payable_account = frappe.db.get_value('Account',
@@ -81,23 +71,8 @@
 			"Personal Loan", 280000, "Repay Over Number of Periods", 20)
 		loan.repay_from_salary = 1
 		loan.submit()
-
-		salary_strcture = "Test Salary Structure for Loan"
-		if not frappe.db.exists('Salary Structure', salary_strcture):
-			salary_strcture = make_salary_structure(salary_strcture, [{
-				'employee': applicant,
-				'from_date': '2017-01-01',
-				'base': 30000
-			}])
-
-			salary_strcture = frappe.get_doc('Salary Structure', salary_strcture)
-			salary_strcture.set('earnings', [{
-				'salary_component': 'Basic Salary',
-				'abbr': 'BS',
-				'amount_based_on_formula':1,
-				'formula': 'base*.5'
-			}])
-			salary_strcture.save()
+		salary_structure = "Test Salary Structure for Loan"
+		salary_structure = make_salary_structure(salary_structure, "Monthly", employee_doc.name)
 
 		dates = get_start_end_dates('Monthly', nowdate())
 		make_payroll_entry(start_date=dates.start_date,
@@ -119,26 +94,6 @@
 		if salary_slip.docstatus == 0:
 			frappe.delete_doc('Salary Slip', name)
 
-		loan.cancel()
-		frappe.delete_doc('Loan', loan.name)
-
-def get_salary_component_account(sal_comp):
-	company = erpnext.get_default_company()
-	sal_comp = frappe.get_doc("Salary Component", sal_comp)
-	sc = sal_comp.append("accounts")
-	sc.company = company
-	sc.default_account = create_account(company)
-
-def create_account(company):
-	salary_account = frappe.db.get_value("Account", "Salary - " + frappe.db.get_value('Company', company, 'abbr'))
-	if not salary_account:
-		frappe.get_doc({
-		"doctype": "Account",
-		"account_name": "Salary",
-		"parent_account": "Indirect Expenses - " + frappe.db.get_value('Company', company, 'abbr'),
-		"company": company
-		}).insert()
-	return salary_account
 
 def make_payroll_entry(**args):
 	args = frappe._dict(args)
diff --git a/erpnext/hr/doctype/salary_slip/test_salary_slip.py b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
index 95be748..6cbfa1c 100644
--- a/erpnext/hr/doctype/salary_slip/test_salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
@@ -10,8 +10,9 @@
 from frappe.utils.make_random import get_random
 from frappe.utils import getdate, nowdate, add_days, add_months, flt
 from erpnext.hr.doctype.salary_structure.salary_structure import make_salary_slip
-from erpnext.hr.doctype.payroll_entry.test_payroll_entry import get_salary_component_account
 from erpnext.hr.doctype.payroll_entry.payroll_entry import get_month_details
+from erpnext.hr.doctype.employee.test_employee import make_employee
+
 
 class TestSalarySlip(unittest.TestCase):
 	def setUp(self):
@@ -32,11 +33,10 @@
 	def test_salary_slip_with_holidays_included(self):
 		no_of_days = self.get_no_of_days()
 		frappe.db.set_value("HR Settings", None, "include_holidays_in_total_working_days", 1)
-		self.make_employee("test_employee@salary.com")
+		make_employee("test_employee@salary.com")
 		frappe.db.set_value("Employee", frappe.get_value("Employee", {"employee_name":"test_employee@salary.com"}, "name"), "relieving_date", None)
 		frappe.db.set_value("Employee", frappe.get_value("Employee", {"employee_name":"test_employee@salary.com"}, "name"), "status", "Active")
-		ss = frappe.get_doc("Salary Slip",
-			self.make_employee_salary_slip("test_employee@salary.com", "Monthly"))
+		ss = make_employee_salary_slip("test_employee@salary.com", "Monthly")
 
 		self.assertEqual(ss.total_working_days, no_of_days[0])
 		self.assertEqual(ss.payment_days, no_of_days[0])
@@ -50,11 +50,10 @@
 	def test_salary_slip_with_holidays_excluded(self):
 		no_of_days = self.get_no_of_days()
 		frappe.db.set_value("HR Settings", None, "include_holidays_in_total_working_days", 0)
-		self.make_employee("test_employee@salary.com")
+		make_employee("test_employee@salary.com")
 		frappe.db.set_value("Employee", frappe.get_value("Employee", {"employee_name":"test_employee@salary.com"}, "name"), "relieving_date", None)
 		frappe.db.set_value("Employee", frappe.get_value("Employee", {"employee_name":"test_employee@salary.com"}, "name"), "status", "Active")
-		ss = frappe.get_doc("Salary Slip",
-			self.make_employee_salary_slip("test_employee@salary.com", "Monthly"))
+		ss = make_employee_salary_slip("test_employee@salary.com", "Monthly")
 
 		self.assertEqual(ss.total_working_days, no_of_days[0] - no_of_days[1])
 		self.assertEqual(ss.payment_days, no_of_days[0] - no_of_days[1])
@@ -72,7 +71,7 @@
 		frappe.db.set_value("HR Settings", None, "include_holidays_in_total_working_days", 1)
 
 		# set joinng date in the same month
-		self.make_employee("test_employee@salary.com")
+		make_employee("test_employee@salary.com")
 		if getdate(nowdate()).day >= 15:
 			date_of_joining = getdate(add_days(nowdate(),-10))
 			relieving_date = getdate(add_days(nowdate(),-10))
@@ -93,8 +92,7 @@
 		frappe.db.set_value("Employee", frappe.get_value("Employee",
 			{"employee_name":"test_employee@salary.com"}, "name"), "status", "Active")
 
-		ss = frappe.get_doc("Salary Slip",
-			self.make_employee_salary_slip("test_employee@salary.com", "Monthly"))
+		ss = make_employee_salary_slip("test_employee@salary.com", "Monthly")
 
 		self.assertEqual(ss.total_working_days, no_of_days[0])
 		self.assertEqual(ss.payment_days, (no_of_days[0] - getdate(date_of_joining).day + 1))
@@ -112,10 +110,9 @@
 		frappe.db.set_value("Employee", frappe.get_value("Employee", {"employee_name":"test_employee@salary.com"}, "name"), "status", "Active")
 
 	def test_employee_salary_slip_read_permission(self):
-		self.make_employee("test_employee@salary.com")
+		make_employee("test_employee@salary.com")
 
-		salary_slip_test_employee = frappe.get_doc("Salary Slip",
-			self.make_employee_salary_slip("test_employee@salary.com", "Monthly"))
+		salary_slip_test_employee = make_employee_salary_slip("test_employee@salary.com", "Monthly")
 		frappe.set_user("test_employee@salary.com")
 		self.assertTrue(salary_slip_test_employee.has_permission("read"))
 
@@ -126,9 +123,8 @@
 		hr_settings.email_salary_slip_to_employee = 1
 		hr_settings.save()
 
-		self.make_employee("test_employee@salary.com")
-		ss = frappe.get_doc("Salary Slip",
-			self.make_employee_salary_slip("test_employee@salary.com", "Monthly"))
+		make_employee("test_employee@salary.com")
+		ss = make_employee_salary_slip("test_employee@salary.com", "Monthly")
 		ss.submit()
 
 		email_queue = frappe.db.sql("""select name from `tabEmail Queue`""")
@@ -136,26 +132,24 @@
 
 	def test_loan_repayment_salary_slip(self):
 		from erpnext.hr.doctype.loan.test_loan import create_loan_type, create_loan
-		applicant = self.make_employee("test_employee@salary.com")
+		applicant = make_employee("test_employee@salary.com")
 		create_loan_type("Car Loan", 500000, 6.4)
 		loan = create_loan(applicant, "Car Loan", 11000, "Repay Over Number of Periods", 20)
 		loan.repay_from_salary = 1
 		loan.submit()
-		ss = frappe.get_doc("Salary Slip",
-			self.make_employee_salary_slip("test_employee@salary.com", "Monthly"))
+		ss = make_employee_salary_slip("test_employee@salary.com", "Monthly")
 		ss.submit()
 		self.assertEqual(ss.total_loan_repayment, 582)
 		self.assertEqual(ss.net_pay, (flt(ss.gross_pay) - (flt(ss.total_deduction) + flt(ss.total_loan_repayment))))
 
 	def test_payroll_frequency(self):
-		fiscal_year = get_fiscal_year(nowdate(), company="_Test Company")[0]
+		fiscal_year = get_fiscal_year(nowdate(), company=erpnext.get_default_company())[0]
 		month = "%02d" % getdate(nowdate()).month
 		m = get_month_details(fiscal_year, month)
 
 		for payroll_frequncy in ["Monthly", "Bimonthly", "Fortnightly", "Weekly", "Daily"]:
-			self.make_employee(payroll_frequncy + "_test_employee@salary.com")
-			ss = frappe.get_doc("Salary Slip",
-				self.make_employee_salary_slip(payroll_frequncy + "_test_employee@salary.com", payroll_frequncy))
+			make_employee(payroll_frequncy + "_test_employee@salary.com")
+			ss = make_employee_salary_slip(payroll_frequncy + "_test_employee@salary.com", payroll_frequncy)
 			if payroll_frequncy == "Monthly":
 				self.assertEqual(ss.end_date, m['month_end_date'])
 			elif payroll_frequncy == "Bimonthly":
@@ -164,45 +158,14 @@
 				else:
 					self.assertEqual(ss.end_date, m['month_end_date'])
 			elif payroll_frequncy == "Fortnightly":
-				self.assertEqual(ss.end_date, getdate(add_days(nowdate(),13)))
+				self.assertEqual(ss.end_date, add_days(nowdate(),13))
 			elif payroll_frequncy == "Weekly":
-				self.assertEqual(ss.end_date, getdate(add_days(nowdate(),6)))
+				self.assertEqual(ss.end_date, add_days(nowdate(),6))
 			elif payroll_frequncy == "Daily":
-				self.assertEqual(ss.end_date, getdate(nowdate()))
-
-	def make_employee(self, user):
-		if not frappe.db.get_value("User", user):
-			frappe.get_doc({
-				"doctype": "User",
-				"email": user,
-				"first_name": user,
-				"new_password": "password",
-				"roles": [{"doctype": "Has Role", "role": "Employee"}]
-			}).insert()
-
-		if not frappe.db.get_value("Employee", {"user_id": user}):
-			employee = frappe.get_doc({
-				"doctype": "Employee",
-				"naming_series": "EMP-",
-				"employee_name": user,
-				"company": erpnext.get_default_company(),
-				"user_id": user,
-				"date_of_birth": "1990-05-08",
-				"date_of_joining": "2013-01-01",
-				"department": frappe.get_all("Department", fields="name")[0].name,
-				"gender": "Female",
-				"company_email": user,
-				"prefered_contact_email": "Company Email",
-				"prefered_email": user,
-				"status": "Active",
-				"employment_type": "Intern"
-			}).insert()
-			return employee.name
-		else:
-			return frappe.get_value("Employee", {"employee_name":user}, "name")
+				self.assertEqual(ss.end_date, nowdate())
 
 	def make_holiday_list(self):
-		fiscal_year = get_fiscal_year(nowdate(), company="_Test Company")
+		fiscal_year = get_fiscal_year(nowdate(), company=erpnext.get_default_company())
 		if not frappe.db.get_value("Holiday List", "Salary Slip Test Holiday List"):
 			holiday_list = frappe.get_doc({
 				"doctype": "Holiday List",
@@ -214,22 +177,6 @@
 			holiday_list.get_weekly_off_dates()
 			holiday_list.save()
 
-	def make_employee_salary_slip(self, user, payroll_frequency):
-		employee = frappe.db.get_value("Employee", {"user_id": user})
-		salary_structure = make_salary_structure(payroll_frequency + " Salary Structure Test for Salary Slip", payroll_frequency, employee)
-		salary_slip = frappe.db.get_value("Salary Slip", {"employee": frappe.db.get_value("Employee", {"user_id": user})})
-
-		if not salary_slip:
-			salary_slip = make_salary_slip(salary_structure, employee = employee)
-			salary_slip.employee_name = frappe.get_value("Employee", {"name":frappe.db.get_value("Employee", {"user_id": user})}, "employee_name")
-			salary_slip.payroll_frequency = payroll_frequency
-			salary_slip.posting_date = nowdate()
-			salary_slip.insert()
-			# salary_slip.submit()
-			salary_slip = salary_slip.name
-
-		return salary_slip
-
 	def make_activity_for_employee(self):
 		activity_type = frappe.get_doc("Activity Type", "_Test Activity Type")
 		activity_type.billing_rate = 50
@@ -246,6 +193,26 @@
 		return [no_of_days_in_month[1], no_of_holidays_in_month]
 
 
+def make_employee_salary_slip(user, payroll_frequency, salary_structure=None):
+	from erpnext.hr.doctype.salary_structure.test_salary_structure import make_salary_structure
+	if not salary_structure:
+		salary_structure = payroll_frequency + " Salary Structure Test for Salary Slip"
+	employee = frappe.db.get_value("Employee", {"user_id": user})
+	salary_structure = make_salary_structure(salary_structure, payroll_frequency, employee)
+	salary_slip = frappe.db.get_value("Salary Slip", {"employee": frappe.db.get_value("Employee", {"user_id": user})})
+
+	if not salary_slip:
+		salary_slip = make_salary_slip(salary_structure, employee = employee)
+		salary_slip.employee_name = frappe.get_value("Employee", {"name":frappe.db.get_value("Employee", {"user_id": user})}, "employee_name")
+		salary_slip.payroll_frequency = payroll_frequency
+		salary_slip.posting_date = nowdate()
+		salary_slip.insert()
+		# salary_slip.submit()
+		# salary_slip = salary_slip.name
+
+	return salary_slip
+
+
 def make_earning_salary_component(salary_components):
 	for salary_component in salary_components:
 		if not frappe.db.exists('Salary Component', salary_component):
@@ -268,35 +235,32 @@
 			sal_comp.insert()
 		get_salary_component_account(salary_component)
 
-def make_salary_structure(sal_struct, payroll_frequency, employee):
-	if not frappe.db.exists('Salary Structure', sal_struct):
-		salary_structure = frappe.get_doc({
-			"doctype": "Salary Structure",
-			"name": sal_struct,
-			"company": "_Test Company",
-			"earnings": get_earnings_component(),
-			"deductions": get_deductions_component(),
-			"payroll_frequency": payroll_frequency,
-			"payment_account": get_random("Account")
+def get_salary_component_account(sal_comp):
+	company = erpnext.get_default_company()
+	sal_comp = frappe.get_doc("Salary Component", sal_comp)
+	sal_comp.append("accounts", {
+		"company": company,
+		"default_account": create_account(company)
+	})
+	sal_comp.save()
+
+
+def create_account(company):
+	salary_account = frappe.db.get_value("Account", "Salary - " + frappe.db.get_value('Company', company, 'abbr'))
+	if not salary_account:
+		frappe.get_doc({
+		"doctype": "Account",
+		"account_name": "Salary",
+		"parent_account": "Indirect Expenses - " + frappe.db.get_value('Company', company, 'abbr'),
+		"company": company
 		}).insert()
-		create_salary_structure_assignment(employee, salary_structure.name)
+	return salary_account
 
-	elif not frappe.db.get_value("Salary Structure Assignment",{'salary_structure':sal_struct, 'employee':employee},'name'):
-		create_salary_structure_assignment(employee, sal_struct)
-	return sal_struct
 
-def create_salary_structure_assignment(employee, salary_structure):
-	salary_structure_assignment = frappe.new_doc("Salary Structure Assignment")
-	salary_structure_assignment.employee = employee
-	salary_structure_assignment.base = 50000
-	salary_structure_assignment.variable = 5000
-	salary_structure_assignment.from_date = add_months(nowdate(), -1)
-	salary_structure_assignment.salary_structure = salary_structure
-	salary_structure_assignment.company = erpnext.get_default_company()
-	salary_structure_assignment.save(ignore_permissions=True)
-	return salary_structure_assignment
+def get_earnings_component(setup=False):
+	if setup:
+		make_earning_salary_component(["Basic Salary", "Special Allowance", "HRA"])
 
-def get_earnings_component():
 	return [
 				{
 					"salary_component": 'Basic Salary',
@@ -327,7 +291,10 @@
 				},
 			]
 
-def get_deductions_component():
+def get_deductions_component(setup=False):
+	if setup:
+		make_deduction_salary_component(["Professional Tax", "TDS"])
+
 	return [
 				{
 					"salary_component": 'Professional Tax',
diff --git a/erpnext/hr/doctype/salary_structure/test_salary_structure.py b/erpnext/hr/doctype/salary_structure/test_salary_structure.py
index 2c4da81..62c8112 100644
--- a/erpnext/hr/doctype/salary_structure/test_salary_structure.py
+++ b/erpnext/hr/doctype/salary_structure/test_salary_structure.py
@@ -8,18 +8,24 @@
 from frappe.utils.make_random import get_random
 from frappe.utils import nowdate, add_days, add_years, getdate, add_months
 from erpnext.hr.doctype.salary_structure.salary_structure import make_salary_slip
-from erpnext.hr.doctype.salary_slip.test_salary_slip \
-	import make_earning_salary_component, make_deduction_salary_component
+from erpnext.hr.doctype.salary_slip.test_salary_slip import get_earnings_component,\
+	get_deductions_component, make_employee_salary_slip
+from erpnext.hr.doctype.employee.test_employee import make_employee
+
 
 test_dependencies = ["Fiscal Year"]
 
 class TestSalaryStructure(unittest.TestCase):
 	def setUp(self):
+		for dt in ["Salary Slip", "Salary Structure", "Salary Structure Assignment"]:
+			frappe.db.sql("delete from `tab%s`" % dt)
+
 		self.make_holiday_list()
 		frappe.db.set_value("Company", erpnext.get_default_company(), "default_holiday_list", "Salary Structure Test Holiday List")
 		make_employee("test_employee@salary.com")
 		make_employee("test_employee_2@salary.com")
 
+
 	def make_holiday_list(self):
 		if not frappe.db.get_value("Holiday List", "Salary Structure Test Holiday List"):
 			holiday_list = frappe.get_doc({
@@ -33,18 +39,21 @@
 			holiday_list.save()
 
 	def test_amount_totals(self):
-		sal_slip = frappe.get_value("Salary Slip", {"employee_name":"test_employee@salary.com"})
+		sal_slip = frappe.get_value("Salary Slip", {"employee_name":"test_employee_2@salary.com"})
 		if not sal_slip:
-			sal_slip = make_salary_slip_from_salary_structure(employee=frappe.get_value("Employee", {"employee_name":"test_employee@salary.com"}))
+			sal_slip = make_employee_salary_slip("test_employee_2@salary.com", "Monthly", "Salary Structure Sample")
 			self.assertEqual(sal_slip.get("salary_structure"), 'Salary Structure Sample')
-			self.assertEqual(sal_slip.get("earnings")[0].amount, 5000)
+			self.assertEqual(sal_slip.get("earnings")[0].amount, 25000)
+			self.assertEqual(sal_slip.get("earnings")[1].amount, 3000)
+			self.assertEqual(sal_slip.get("earnings")[2].amount, 12500)
+			self.assertEqual(sal_slip.get("gross_pay"), 40500)
 			self.assertEqual(sal_slip.get("deductions")[0].amount, 5000)
-			self.assertEqual(sal_slip.get("deductions")[1].amount, 2500)
-			self.assertEqual(sal_slip.get("total_deduction"), 7500)
-			self.assertEqual(sal_slip.get("net_pay"), 7500)
+			self.assertEqual(sal_slip.get("deductions")[1].amount, 5000)
+			self.assertEqual(sal_slip.get("total_deduction"), 10000)
+			self.assertEqual(sal_slip.get("net_pay"), 30500)
 
 	def test_whitespaces_in_formula_conditions_fields(self):
-		make_salary_structure("Salary Structure Sample")
+		make_salary_structure("Salary Structure Sample", "Monthly")
 		salary_structure = frappe.get_doc("Salary Structure", "Salary Structure Sample")
 
 		for row in salary_structure.earnings:
@@ -63,131 +72,33 @@
 		for row in salary_structure.deductions:
 			self.assertFalse(("\n" in row.formula) or ("\n" in row.condition))
 
-def make_employee(user):
-	if not frappe.db.get_value("User", user):
-		frappe.get_doc({
-			"doctype": "User",
-			"email": user,
-			"first_name": user,
-			"new_password": "password",
-			"roles": [{"doctype": "Has Role", "role": "Employee"}]
-		}).insert()
 
-	if not frappe.db.get_value("Employee", {"user_id": user}):
-		emp = frappe.get_doc({
-			"doctype": "Employee",
-			"naming_series": "EMP-",
-			"employee_name": user,
-			"company": erpnext.get_default_company(),
-			"user_id": user,
-			"date_of_birth": "1990-05-08",
-			"date_of_joining": "2013-01-01",
-			"relieving_date": "",
-			"department": frappe.get_all("Department", fields="name")[0].name,
-			"gender": "Female",
-			"company_email": user,
-			"status": "Active",
-			"employment_type": "Intern"
-		}).insert()
-		return emp.name
-	else:
-		return frappe.get_value("Employee", {"employee_name":user}, "name")			
-
-def make_salary_slip_from_salary_structure(employee):
-	sal_struct = make_salary_structure('Salary Structure Sample')
-	sal_slip = make_salary_slip(sal_struct, employee = employee)
-	sal_slip.employee_name = frappe.get_value("Employee", {"name":employee}, "employee_name")
-	sal_slip.start_date = nowdate()
-	sal_slip.posting_date = nowdate()
-	sal_slip.payroll_frequency =  "Monthly"
-	sal_slip.insert()
-	sal_slip.submit()
-	return sal_slip	
-
-def make_salary_structure(sal_struct, employees=None):
-	if not frappe.db.exists('Salary Structure', sal_struct):
-		frappe.get_doc({
+def make_salary_structure(salary_structure, payroll_frequency, employee=None):
+	if not frappe.db.exists('Salary Structure', salary_structure):
+		salary_structure_doc = frappe.get_doc({
 			"doctype": "Salary Structure",
-			"name": sal_struct,
+			"name": salary_structure,
 			"company": erpnext.get_default_company(),
-			"employees": employees or get_employee_details(),
 			"earnings": get_earnings_component(),
 			"deductions": get_deductions_component(),
-			"payroll_frequency": "Monthly",
-			"payment_account": frappe.get_value('Account', {'account_type': 'Cash', 'company': erpnext.get_default_company(),'is_group':0}, "name")
+			"payroll_frequency": payroll_frequency,
+			"payment_account": get_random("Account")
 		}).insert()
-	return sal_struct	
+		if employee:
+			create_salary_structure_assignment(employee, salary_structure)
 
-def get_employee_details():
-	return [{"employee": frappe.get_value("Employee", {"employee_name":"test_employee@salary.com"}, "name"),
-			"base": 25000,
-			"variable": 5000,
-			"from_date": add_months(nowdate(),-1),
-			"idx": 1
-			},
-			{"employee": frappe.get_value("Employee", {"employee_name":"test_employee_2@salary.com"}, "name"),
-			 "base": 15000,
-			 "variable": 100,
-			 "from_date": add_months(nowdate(),-1),
-			 "idx": 2
-			}
-		]
+	elif employee and not frappe.db.get_value("Salary Structure Assignment",{'salary_structure':salary_structure, 'employee':employee},'name'):
+		create_salary_structure_assignment(employee, salary_structure)
+	return salary_structure
 
-def get_earnings_component():
-	make_earning_salary_component(["Basic Salary", "Special Allowance", "HRA"])
-	make_deduction_salary_component(["Professional Tax", "TDS"])
-
-	return [
-				{
-					"salary_component": 'Basic Salary',
-					"abbr":'BS',
-					"condition": 'base > 10000',
-					"formula": 'base*.2',
-					"idx": 1
-				},
-				{
-					"salary_component": 'Basic Salary',
-					"abbr":'BS',
-					"condition": 'base < 10000',
-					"formula": 'base*.1',
-					"idx": 2
-				},
-				{
-					"salary_component": 'HRA',
-					"abbr":'H',
-					"amount": 10000,
-					"idx": 3
-				},
-				{
-					"salary_component": 'Special Allowance',
-					"abbr":'SA',
-					"condition": 'H < 10000',
-					"formula": 'BS*.5',
-					"idx": 4
-				},
-			]
-
-def get_deductions_component():	
-	return [
-				{
-					"salary_component": 'Professional Tax',
-					"abbr":'PT',
-					"condition": 'base > 10000',
-					"formula": 'base*.2',
-					"idx": 1
-				},
-				{
-					"salary_component": 'TDS',
-					"abbr":'T',
-					"condition": 'employment_type!="Intern"',
-					"formula": 'base*.5',
-					"idx": 2
-				},
-				{
-					"salary_component": 'TDS',
-					"abbr":'T',
-					"condition": 'employment_type=="Intern"',
-					"formula": 'base*.1',
-					"idx": 3
-				}
-			]		
+def create_salary_structure_assignment(employee, salary_structure):
+	salary_structure_assignment = frappe.new_doc("Salary Structure Assignment")
+	salary_structure_assignment.employee = employee
+	salary_structure_assignment.base = 50000
+	salary_structure_assignment.variable = 5000
+	salary_structure_assignment.from_date = add_months(nowdate(), -1)
+	salary_structure_assignment.salary_structure = salary_structure
+	salary_structure_assignment.company = erpnext.get_default_company()
+	salary_structure_assignment.save(ignore_permissions=True)
+	salary_structure_assignment.submit()
+	return salary_structure_assignment
\ No newline at end of file
diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
index e253736..5b33a97 100644
--- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
@@ -685,7 +685,7 @@
 		from erpnext.manufacturing.doctype.work_order.work_order \
 			import make_stock_entry as _make_stock_entry
 		bom_no = frappe.db.get_value("BOM", {"item": "_Test FG Item 2",
-			"is_default": 1, "docstatus": 1}, ["name", "operating_cost"])
+			"is_default": 1, "docstatus": 1})
 
 		work_order = frappe.new_doc("Work Order")
 		work_order.update({
diff --git a/erpnext/tests/test_woocommerce.py b/erpnext/tests/test_woocommerce.py
index 67e62f2..dc336d1 100644
--- a/erpnext/tests/test_woocommerce.py
+++ b/erpnext/tests/test_woocommerce.py
@@ -9,15 +9,12 @@
 		company.abbr = "W"
 		company.default_currency = "INR"
 		company.save()
-		frappe.db.commit()
 
 		default = frappe.get_doc("Global Defaults")
 		self.old_default_company = default.default_company
 		default.default_company = "Woocommerce"
 		default.save()
 
-		frappe.db.commit()
-
 		time.sleep(5)
 
 		woo_settings = frappe.get_doc("Woocommerce Settings")
@@ -30,7 +27,6 @@
 		woo_settings.f_n_f_account = "Expenses - W"
 		woo_settings.save(ignore_permissions=True)
 
-		frappe.db.commit()
 
 	def test_woocommerce_request(self):
 		r = emulate_request()
@@ -51,7 +47,6 @@
 		default = frappe.get_doc("Global Defaults")
 		default.default_company = self.old_default_company
 		default.save()
-		frappe.db.commit()
 
 
 
@@ -86,6 +81,5 @@
 		if isinstance(so, erpnext.selling.doctype.sales_order.sales_order.SalesOrder):
 			so.cancel()
 			so.delete()
-		frappe.db.commit()
 	except frappe.DoesNotExistError:
 		pass
\ No newline at end of file