Test case fixes
diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py
index d71ffcb..eab15ee 100755
--- a/erpnext/hr/doctype/employee/employee.py
+++ b/erpnext/hr/doctype/employee/employee.py
@@ -66,12 +66,12 @@
 
 	def update_user_permissions(self):
 		if not self.create_user_permission: return
-		if has_user_permission_for_employee(self.user_id, self.name) \
-			or not has_permission('User Permission', ptype='write'):
-				return
+		if not has_permission('User Permission', ptype='write'): return
 
-		add_user_permission("Employee", self.name, self.user_id)
-		set_user_permission_if_allowed("Company", self.company, self.user_id)
+		if has_user_permission_for_employee(self.user_id, self.name):
+			add_user_permission("Employee", self.name, self.user_id)
+		if has_user_permission_for_employee(self.user_id, self.company):
+			set_user_permission_if_allowed("Company", self.company, self.user_id)
 
 	def update_user(self):
 		# add employee role if missing
diff --git a/erpnext/hr/doctype/payroll_entry/test_payroll_entry.py b/erpnext/hr/doctype/payroll_entry/test_payroll_entry.py
index e9cd55e..acf339d 100644
--- a/erpnext/hr/doctype/payroll_entry/test_payroll_entry.py
+++ b/erpnext/hr/doctype/payroll_entry/test_payroll_entry.py
@@ -13,7 +13,6 @@
 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"]:
@@ -23,12 +22,14 @@
 		make_deduction_salary_component(["Professional Tax", "TDS"])
 
 	def test_payroll_entry(self): # pylint: disable=no-self-use
-
+		company = erpnext.get_default_company()
 		for data in frappe.get_all('Salary Component', fields = ["name"]):
 			if not frappe.db.get_value('Salary Component Account',
-				{'parent': data.name, 'company': erpnext.get_default_company()}, 'name'):
+				{'parent': data.name, 'company': company}, 'name'):
 				get_salary_component_account(data.name)
 
+		employee = frappe.db.get_value("Employee", {'company': company})
+		make_salary_structure("_Test Salary Structure", "Monthly", employee)
 		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)
@@ -99,7 +100,7 @@
 	args = frappe._dict(args)
 
 	payroll_entry = frappe.new_doc("Payroll Entry")
-	payroll_entry.company = erpnext.get_default_company()
+	payroll_entry.company = args.company or erpnext.get_default_company()
 	payroll_entry.start_date = args.start_date or "2016-11-01"
 	payroll_entry.end_date = args.end_date or "2016-11-30"
 	payroll_entry.payment_account = get_payment_account()
diff --git a/erpnext/hr/doctype/salary_structure/test_salary_structure.py b/erpnext/hr/doctype/salary_structure/test_salary_structure.py
index 62c8112..da55306 100644
--- a/erpnext/hr/doctype/salary_structure/test_salary_structure.py
+++ b/erpnext/hr/doctype/salary_structure/test_salary_structure.py
@@ -84,11 +84,11 @@
 			"payroll_frequency": payroll_frequency,
 			"payment_account": get_random("Account")
 		}).insert()
-		if employee:
-			create_salary_structure_assignment(employee, salary_structure)
+		salary_structure_doc.submit()
 
-	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)
+	if employee and not frappe.db.get_value("Salary Structure Assignment",
+		{'employee':employee, 'docstatus': 1}):
+			create_salary_structure_assignment(employee, salary_structure)
 	return salary_structure
 
 def create_salary_structure_assignment(employee, salary_structure):