perf: slimmer and faster before_tests
diff --git a/erpnext/setup/utils.py b/erpnext/setup/utils.py
index 6db1961..fbf899c 100644
--- a/erpnext/setup/utils.py
+++ b/erpnext/setup/utils.py
@@ -1,7 +1,6 @@
 # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 # License: GNU General Public License v3. See license.txt
 
-
 import frappe
 from frappe import _
 from frappe.utils import add_days, flt, get_datetime_str, nowdate
@@ -15,8 +14,9 @@
 	frappe.clear_cache()
 	# complete setup if missing
 	from frappe.desk.page.setup_wizard.setup_wizard import setup_complete
-	current_year = now_datetime().year
-	if not frappe.get_list("Company"):
+
+	if not frappe.db.a_row_exists("Company"):
+		current_year = now_datetime().year
 		setup_complete({
 			"currency"          :"USD",
 			"full_name"         :"Test User",
@@ -34,13 +34,15 @@
 			"chart_of_accounts" : "Standard",
 			"domains"           : ["Manufacturing"],
 		})
+		_enable_all_domains()
 
 	frappe.db.sql("delete from `tabLeave Allocation`")
 	frappe.db.sql("delete from `tabLeave Application`")
 	frappe.db.sql("delete from `tabSalary Slip`")
 	frappe.db.sql("delete from `tabItem Price`")
 
-	enable_all_roles_and_domains()
+	_enable_all_roles_for_admin()
+
 	set_defaults_for_tests()
 
 	frappe.db.commit()
@@ -119,22 +121,36 @@
 
 def enable_all_roles_and_domains():
 	""" enable all roles and domain for testing """
-	# add all roles to users
-	domains = frappe.get_all("Domain")
+	_enable_all_domains()
+	_enable_all_roles_for_admin()
+
+
+def _enable_all_domains():
+	domains = frappe.get_all("Domain", pluck="name")
 	if not domains:
 		return
+	frappe.get_single('Domain Settings').set_active_domains(domains)
 
+
+def _enable_all_roles_for_admin():
 	from frappe.desk.page.setup_wizard.setup_wizard import add_all_roles_to
-	frappe.get_single('Domain Settings').set_active_domains(\
-		[d.name for d in domains])
-	add_all_roles_to('Administrator')
+
+	all_roles = set(frappe.db.get_values("Role", pluck="name"))
+	admin_roles = set(frappe.db.get_values("Has Role",
+		{"parent": "Administrator"}, fieldname="role", pluck="role"))
+
+	if all_roles.difference(admin_roles):
+		add_all_roles_to('Administrator')
+
 
 def set_defaults_for_tests():
-	selling_settings = frappe.get_single("Selling Settings")
-	selling_settings.customer_group = get_root_of("Customer Group")
-	selling_settings.territory = get_root_of("Territory")
-	selling_settings.save()
-
+	defaults = {
+		"customer_group": get_root_of("Customer Group"),
+		"territory": get_root_of("Territory"),
+	}
+	frappe.db.set_single_value("Selling Settings", defaults)
+	for key, value in defaults.items():
+			frappe.db.set_default(key, value)
 	frappe.db.set_single_value("Stock Settings", "auto_insert_price_list_rate_if_missing", 0)