@@ -378,7 +378,7 @@ def get_user(username): | |||||
else: | else: | ||||
return User(username) | return User(username) | ||||
def has_permission(doctype, ptype="read", doc=None, user=None): | |||||
def has_permission(doctype, ptype="read", doc=None, user=None, verbose=False): | |||||
"""Raises `frappe.PermissionError` if not permitted. | """Raises `frappe.PermissionError` if not permitted. | ||||
:param doctype: DocType for which permission is to be check. | :param doctype: DocType for which permission is to be check. | ||||
@@ -386,7 +386,7 @@ def has_permission(doctype, ptype="read", doc=None, user=None): | |||||
:param doc: [optional] Checks User permissions for given doc. | :param doc: [optional] Checks User permissions for given doc. | ||||
:param user: [optional] Check for given user. Default: current user.""" | :param user: [optional] Check for given user. Default: current user.""" | ||||
import frappe.permissions | import frappe.permissions | ||||
return frappe.permissions.has_permission(doctype, ptype, doc, user=user) | |||||
return frappe.permissions.has_permission(doctype, ptype, doc, verbose=verbose, user=user) | |||||
def is_table(doctype): | def is_table(doctype): | ||||
"""Returns True if `istable` property (indicating child Table) is set for given DocType.""" | """Returns True if `istable` property (indicating child Table) is set for given DocType.""" | ||||
@@ -441,6 +441,14 @@ def get_doc(arg1, arg2=None): | |||||
import frappe.model.document | import frappe.model.document | ||||
return frappe.model.document.get_doc(arg1, arg2) | return frappe.model.document.get_doc(arg1, arg2) | ||||
def get_last_doc(doctype): | |||||
"""Get last created document of this type.""" | |||||
d = get_all(doctype, ["name"], order_by="creation desc", limit_page_length=1) | |||||
if d: | |||||
return get_doc(doctype, d[0].name) | |||||
else: | |||||
raise DoesNotExistError | |||||
def get_single(doctype): | def get_single(doctype): | ||||
"""Return a `frappe.model.document.Document` object of the given Single doctype.""" | """Return a `frappe.model.document.Document` object of the given Single doctype.""" | ||||
return get_doc(doctype, doctype) | return get_doc(doctype, doctype) | ||||
@@ -69,9 +69,12 @@ class TestDocShare(unittest.TestCase): | |||||
def test_remove_share(self): | def test_remove_share(self): | ||||
frappe.share.add("Event", self.event.name, self.user, share=1) | frappe.share.add("Event", self.event.name, self.user, share=1) | ||||
frappe.set_user(self.user) | |||||
self.assertTrue(self.event.has_permission("share")) | self.assertTrue(self.event.has_permission("share")) | ||||
frappe.set_user("Administrator") | |||||
frappe.share.remove("Event", self.event.name, self.user) | frappe.share.remove("Event", self.event.name, self.user) | ||||
frappe.set_user(self.user) | |||||
self.assertFalse(self.event.has_permission("share")) | self.assertFalse(self.event.has_permission("share")) | ||||
@@ -178,8 +178,6 @@ def upload(rows = None, submit_after_import=None, ignore_encoding_errors=False, | |||||
check_data_length() | check_data_length() | ||||
make_column_map() | make_column_map() | ||||
frappe.db.begin() | |||||
if overwrite==None: | if overwrite==None: | ||||
overwrite = params.get('overwrite') | overwrite = params.get('overwrite') | ||||
@@ -7,251 +7,248 @@ from frappe.core.page.data_import_tool.data_import_tool import export_csv | |||||
import unittest | import unittest | ||||
class TestDataImportFixtures(unittest.TestCase): | class TestDataImportFixtures(unittest.TestCase): | ||||
def setUp(self): | def setUp(self): | ||||
print "\nTeste for export explicit fixtures" | |||||
print "see fixtures csv test files in sites folder" | |||||
pass | |||||
#start test for Custom Script | #start test for Custom Script | ||||
def test_Custom_Script_fixture_simple(self): | def test_Custom_Script_fixture_simple(self): | ||||
fixture = "Custom Script" | fixture = "Custom Script" | ||||
path = frappe.scrub(fixture) + "_original_style.csv" | path = frappe.scrub(fixture) + "_original_style.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Custom_Script_fixture_simple_name_equal_default(self): | def test_Custom_Script_fixture_simple_name_equal_default(self): | ||||
fixture = ["Custom Script", {"name":["Item-Client"]}] | fixture = ["Custom Script", {"name":["Item-Client"]}] | ||||
path = frappe.scrub(fixture[0]) + "_simple_name_equal_default.csv" | path = frappe.scrub(fixture[0]) + "_simple_name_equal_default.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Custom_Script_fixture_simple_name_equal(self): | def test_Custom_Script_fixture_simple_name_equal(self): | ||||
fixture = ["Custom Script", {"name":["Item-Client"],"op":"="}] | fixture = ["Custom Script", {"name":["Item-Client"],"op":"="}] | ||||
path = frappe.scrub(fixture[0]) + "_simple_name_equal.csv" | path = frappe.scrub(fixture[0]) + "_simple_name_equal.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Custom_Script_fixture_simple_name_not_equal(self): | def test_Custom_Script_fixture_simple_name_not_equal(self): | ||||
fixture = ["Custom Script", {"name":["Item-Client"],"op":"!="}] | fixture = ["Custom Script", {"name":["Item-Client"],"op":"!="}] | ||||
path = frappe.scrub(fixture[0]) + "_simple_name_not_equal.csv" | path = frappe.scrub(fixture[0]) + "_simple_name_not_equal.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
#without [] around the name... | #without [] around the name... | ||||
def test_Custom_Script_fixture_simple_name_at_least_equal(self): | def test_Custom_Script_fixture_simple_name_at_least_equal(self): | ||||
fixture = ["Custom Script", {"name":"Item-Cli"}] | fixture = ["Custom Script", {"name":"Item-Cli"}] | ||||
path = frappe.scrub(fixture[0]) + "_simple_name_at_least_equal.csv" | path = frappe.scrub(fixture[0]) + "_simple_name_at_least_equal.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Custom_Script_fixture_multi_name_equal(self): | def test_Custom_Script_fixture_multi_name_equal(self): | ||||
fixture = ["Custom Script", {"name":["Item-Client", "Customer-Client"],"op":"="}] | fixture = ["Custom Script", {"name":["Item-Client", "Customer-Client"],"op":"="}] | ||||
path = frappe.scrub(fixture[0]) + "_multi_name_equal.csv" | path = frappe.scrub(fixture[0]) + "_multi_name_equal.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Custom_Script_fixture_multi_name_not_equal(self): | def test_Custom_Script_fixture_multi_name_not_equal(self): | ||||
fixture = ["Custom Script", {"name":["Item-Client", "Customer-Client"],"op":"!="}] | fixture = ["Custom Script", {"name":["Item-Client", "Customer-Client"],"op":"!="}] | ||||
path = frappe.scrub(fixture[0]) + "_multi_name_not_equal.csv" | path = frappe.scrub(fixture[0]) + "_multi_name_not_equal.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Custom_Script_fixture_empty_object(self): | def test_Custom_Script_fixture_empty_object(self): | ||||
fixture = ["Custom Script", {}] | fixture = ["Custom Script", {}] | ||||
path = frappe.scrub(fixture[0]) + "_empty_object_should_be_all.csv" | path = frappe.scrub(fixture[0]) + "_empty_object_should_be_all.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Custom_Script_fixture_just_list(self): | def test_Custom_Script_fixture_just_list(self): | ||||
fixture = ["Custom Script"] | fixture = ["Custom Script"] | ||||
path = frappe.scrub(fixture[0]) + "_just_list_should_be_all.csv" | path = frappe.scrub(fixture[0]) + "_just_list_should_be_all.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
# Custom Script regular expression | # Custom Script regular expression | ||||
def test_Custom_Script_fixture_rex_no_flags(self): | def test_Custom_Script_fixture_rex_no_flags(self): | ||||
fixture = ["Custom Script", {"name":r"^[i|A]"}] | fixture = ["Custom Script", {"name":r"^[i|A]"}] | ||||
path = frappe.scrub(fixture[0]) + "_rex_no_flags.csv" | path = frappe.scrub(fixture[0]) + "_rex_no_flags.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Custom_Script_fixture_rex_with_flags(self): | def test_Custom_Script_fixture_rex_with_flags(self): | ||||
fixture = ["Custom Script", {"name":r"^[i|A]", "flags":"L,M"}] | fixture = ["Custom Script", {"name":r"^[i|A]", "flags":"L,M"}] | ||||
path = frappe.scrub(fixture[0]) + "_rex_with_flags.csv" | path = frappe.scrub(fixture[0]) + "_rex_with_flags.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
#start test for Custom Field | #start test for Custom Field | ||||
def test_Custom_Field_fixture_simple(self): | def test_Custom_Field_fixture_simple(self): | ||||
fixture = "Custom Field" | fixture = "Custom Field" | ||||
path = frappe.scrub(fixture) + "_original_style.csv" | path = frappe.scrub(fixture) + "_original_style.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Custom_Field_fixture_simple_name_equal_default(self): | def test_Custom_Field_fixture_simple_name_equal_default(self): | ||||
fixture = ["Custom Field", {"name":["Item-vat"]}] | fixture = ["Custom Field", {"name":["Item-vat"]}] | ||||
path = frappe.scrub(fixture[0]) + "_simple_name_equal_default.csv" | path = frappe.scrub(fixture[0]) + "_simple_name_equal_default.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Custom_Field_fixture_simple_name_equal(self): | def test_Custom_Field_fixture_simple_name_equal(self): | ||||
fixture = ["Custom Field", {"name":["Item-vat"],"op":"="}] | fixture = ["Custom Field", {"name":["Item-vat"],"op":"="}] | ||||
path = frappe.scrub(fixture[0]) + "_simple_name_equal.csv" | path = frappe.scrub(fixture[0]) + "_simple_name_equal.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Custom_Field_fixture_simple_name_not_equal(self): | def test_Custom_Field_fixture_simple_name_not_equal(self): | ||||
fixture = ["Custom Field", {"name":["Item-vat"],"op":"!="}] | fixture = ["Custom Field", {"name":["Item-vat"],"op":"!="}] | ||||
path = frappe.scrub(fixture[0]) + "_simple_name_not_equal.csv" | path = frappe.scrub(fixture[0]) + "_simple_name_not_equal.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
#without [] around the name... | #without [] around the name... | ||||
def test_Custom_Field_fixture_simple_name_at_least_equal(self): | def test_Custom_Field_fixture_simple_name_at_least_equal(self): | ||||
fixture = ["Custom Field", {"name":"Item-va"}] | fixture = ["Custom Field", {"name":"Item-va"}] | ||||
path = frappe.scrub(fixture[0]) + "_simple_name_at_least_equal.csv" | path = frappe.scrub(fixture[0]) + "_simple_name_at_least_equal.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Custom_Field_fixture_multi_name_equal(self): | def test_Custom_Field_fixture_multi_name_equal(self): | ||||
fixture = ["Custom Field", {"name":["Item-vat", "Bin-vat"],"op":"="}] | fixture = ["Custom Field", {"name":["Item-vat", "Bin-vat"],"op":"="}] | ||||
path = frappe.scrub(fixture[0]) + "_multi_name_equal.csv" | path = frappe.scrub(fixture[0]) + "_multi_name_equal.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Custom_Field_fixture_multi_name_not_equal(self): | def test_Custom_Field_fixture_multi_name_not_equal(self): | ||||
fixture = ["Custom Field", {"name":["Item-vat", "Bin-vat"],"op":"!="}] | fixture = ["Custom Field", {"name":["Item-vat", "Bin-vat"],"op":"!="}] | ||||
path = frappe.scrub(fixture[0]) + "_multi_name_not_equal.csv" | path = frappe.scrub(fixture[0]) + "_multi_name_not_equal.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Custom_Field_fixture_empty_object(self): | def test_Custom_Field_fixture_empty_object(self): | ||||
fixture = ["Custom Field", {}] | fixture = ["Custom Field", {}] | ||||
path = frappe.scrub(fixture[0]) + "_empty_object_should_be_all.csv" | path = frappe.scrub(fixture[0]) + "_empty_object_should_be_all.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Custom_Field_fixture_just_list(self): | def test_Custom_Field_fixture_just_list(self): | ||||
fixture = ["Custom Field"] | fixture = ["Custom Field"] | ||||
path = frappe.scrub(fixture[0]) + "_just_list_should_be_all.csv" | path = frappe.scrub(fixture[0]) + "_just_list_should_be_all.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
# Custom Field regular expression | # Custom Field regular expression | ||||
def test_Custom_Field_fixture_rex_no_flags(self): | def test_Custom_Field_fixture_rex_no_flags(self): | ||||
fixture = ["Custom Field", {"name":r"^[r|L]"}] | fixture = ["Custom Field", {"name":r"^[r|L]"}] | ||||
path = frappe.scrub(fixture[0]) + "_rex_no_flags.csv" | path = frappe.scrub(fixture[0]) + "_rex_no_flags.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Custom_Field_fixture_rex_with_flags(self): | def test_Custom_Field_fixture_rex_with_flags(self): | ||||
fixture = ["Custom Field", {"name":r"^[i|A]", "flags":"L,M"}] | fixture = ["Custom Field", {"name":r"^[i|A]", "flags":"L,M"}] | ||||
path = frappe.scrub(fixture[0]) + "_rex_with_flags.csv" | path = frappe.scrub(fixture[0]) + "_rex_with_flags.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
#start test for Doctype | #start test for Doctype | ||||
def test_Doctype_fixture_simple(self): | def test_Doctype_fixture_simple(self): | ||||
fixture = "ToDo" | fixture = "ToDo" | ||||
path = "Doctype_" + frappe.scrub(fixture) + "_original_style_should_be_all.csv" | path = "Doctype_" + frappe.scrub(fixture) + "_original_style_should_be_all.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Doctype_fixture_simple_name_equal_default(self): | def test_Doctype_fixture_simple_name_equal_default(self): | ||||
fixture = ["ToDo", {"name":["TDI00000008"]}] | fixture = ["ToDo", {"name":["TDI00000008"]}] | ||||
path = "Doctype_" + frappe.scrub(fixture[0]) + "_simple_name_equal_default.csv" | path = "Doctype_" + frappe.scrub(fixture[0]) + "_simple_name_equal_default.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Doctype_fixture_simple_name_equal(self): | def test_Doctype_fixture_simple_name_equal(self): | ||||
fixture = ["ToDo", {"name":["TDI00000002"],"op":"="}] | fixture = ["ToDo", {"name":["TDI00000002"],"op":"="}] | ||||
path = "Doctype_" + frappe.scrub(fixture[0]) + "_simple_name_equal.csv" | path = "Doctype_" + frappe.scrub(fixture[0]) + "_simple_name_equal.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Doctype_simple_name_not_equal(self): | def test_Doctype_simple_name_not_equal(self): | ||||
fixture = ["ToDo", {"name":["TDI00000002"],"op":"!="}] | fixture = ["ToDo", {"name":["TDI00000002"],"op":"!="}] | ||||
path = "Doctype_" + frappe.scrub(fixture[0]) + "_simple_name_not_equal.csv" | path = "Doctype_" + frappe.scrub(fixture[0]) + "_simple_name_not_equal.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
#without [] around the name... | #without [] around the name... | ||||
def test_Doctype_fixture_simple_name_at_least_equal(self): | def test_Doctype_fixture_simple_name_at_least_equal(self): | ||||
fixture = ["ToDo", {"name":"TDI"}] | fixture = ["ToDo", {"name":"TDI"}] | ||||
path = "Doctype_" + frappe.scrub(fixture[0]) + "_simple_name_at_least_equal.csv" | path = "Doctype_" + frappe.scrub(fixture[0]) + "_simple_name_at_least_equal.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Doctype_multi_name_equal(self): | def test_Doctype_multi_name_equal(self): | ||||
fixture = ["ToDo", {"name":["TDI00000002", "TDI00000008"],"op":"="}] | fixture = ["ToDo", {"name":["TDI00000002", "TDI00000008"],"op":"="}] | ||||
path = "Doctype_" + frappe.scrub(fixture[0]) + "_multi_name_equal.csv" | path = "Doctype_" + frappe.scrub(fixture[0]) + "_multi_name_equal.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Doctype_multi_name_not_equal(self): | def test_Doctype_multi_name_not_equal(self): | ||||
fixture = ["ToDo", {"name":["TDI00000002", "TDI00000008"],"op":"!="}] | fixture = ["ToDo", {"name":["TDI00000002", "TDI00000008"],"op":"!="}] | ||||
path = "Doctype_" + frappe.scrub(fixture[0]) + "_multi_name_not_equal.csv" | path = "Doctype_" + frappe.scrub(fixture[0]) + "_multi_name_not_equal.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Doctype_fixture_empty_object(self): | def test_Doctype_fixture_empty_object(self): | ||||
fixture = ["ToDo", {}] | fixture = ["ToDo", {}] | ||||
path = "Doctype_" + frappe.scrub(fixture[0]) + "_empty_object_should_be_all.csv" | path = "Doctype_" + frappe.scrub(fixture[0]) + "_empty_object_should_be_all.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Doctype_fixture_just_list(self): | def test_Doctype_fixture_just_list(self): | ||||
fixture = ["ToDo"] | fixture = ["ToDo"] | ||||
path = "Doctype_" + frappe.scrub(fixture[0]) + "_just_list_should_be_all.csv" | path = "Doctype_" + frappe.scrub(fixture[0]) + "_just_list_should_be_all.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
# Doctype regular expression | # Doctype regular expression | ||||
def test_Doctype_fixture_rex_no_flags(self): | def test_Doctype_fixture_rex_no_flags(self): | ||||
fixture = ["ToDo", {"name":r"^TDi"}] | fixture = ["ToDo", {"name":r"^TDi"}] | ||||
path = "Doctype_" + frappe.scrub(fixture[0]) + "_rex_no_flags_should_be_all.csv" | path = "Doctype_" + frappe.scrub(fixture[0]) + "_rex_no_flags_should_be_all.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
def test_Doctype_fixture_rex_with_flags(self): | def test_Doctype_fixture_rex_with_flags(self): | ||||
fixture = ["ToDo", {"name":r"^TDi", "flags":"L,M"}] | fixture = ["ToDo", {"name":r"^TDi", "flags":"L,M"}] | ||||
path = "Doctype_" + frappe.scrub(fixture[0]) + "_rex_with_flags_should_be_none.csv" | path = "Doctype_" + frappe.scrub(fixture[0]) + "_rex_with_flags_should_be_none.csv" | ||||
print "teste done {}".format(path) | |||||
# print "teste done {}".format(path) | |||||
export_csv(fixture, path) | export_csv(fixture, path) | ||||
self.assertTrue(True) | self.assertTrue(True) | ||||
@@ -43,11 +43,11 @@ class TestCustomizeForm(unittest.TestCase): | |||||
d = self.get_customize_form("Event") | d = self.get_customize_form("Event") | ||||
self.assertEquals(d.doc_type, "Event") | self.assertEquals(d.doc_type, "Event") | ||||
self.assertEquals(len(d.get("fields")), 30) | |||||
self.assertEquals(len(d.get("fields")), 28) | |||||
d = self.get_customize_form("User") | d = self.get_customize_form("User") | ||||
self.assertEquals(d.doc_type, "User") | self.assertEquals(d.doc_type, "User") | ||||
self.assertEquals(len(d.get("fields")), 48) | |||||
self.assertEquals(len(d.get("fields")), 50) | |||||
self.assertEquals(d.get("fields")[-1].fieldname, "test_custom_field") | self.assertEquals(d.get("fields")[-1].fieldname, "test_custom_field") | ||||
self.assertEquals(d.get("fields", {"fieldname": "location"})[0].in_list_view, 1) | self.assertEquals(d.get("fields", {"fieldname": "location"})[0].in_list_view, 1) | ||||
@@ -82,14 +82,8 @@ def set_default(key, value, parent, parenttype="__default"): | |||||
:param value: Default value. | :param value: Default value. | ||||
:param parent: Usually, **User** to whom the default belongs. | :param parent: Usually, **User** to whom the default belongs. | ||||
:param parenttype: [optional] default is `__default`.""" | :param parenttype: [optional] default is `__default`.""" | ||||
if frappe.db.sql("""select defkey from `tabDefaultValue` where | |||||
defkey=%s and parent=%s """, (key, parent)): | |||||
# update | |||||
frappe.db.sql("""update `tabDefaultValue` set defvalue=%s, parenttype=%s | |||||
where parent=%s and defkey=%s""", (value, parenttype, parent, key)) | |||||
_clear_cache(parent) | |||||
else: | |||||
add_default(key, value, parent) | |||||
frappe.db.sql("""delete from `tabDefaultValue` where defkey=%s and parent=%s""", (key, parent)) | |||||
add_default(key, value, parent) | |||||
def add_default(key, value, parent, parenttype=None): | def add_default(key, value, parent, parenttype=None): | ||||
d = frappe.get_doc({ | d = frappe.get_doc({ | ||||
@@ -100,7 +94,7 @@ def add_default(key, value, parent, parenttype=None): | |||||
"defkey": key, | "defkey": key, | ||||
"defvalue": value | "defvalue": value | ||||
}) | }) | ||||
d.db_insert() | |||||
d.insert(ignore_permissions=True) | |||||
_clear_cache(parent) | _clear_cache(parent) | ||||
def clear_default(key=None, value=None, parent=None, name=None, parenttype=None): | def clear_default(key=None, value=None, parent=None, name=None, parenttype=None): | ||||
@@ -154,6 +148,7 @@ def get_defaults_for(parent="__default"): | |||||
"""get all defaults""" | """get all defaults""" | ||||
defaults = frappe.cache().get_value("__defaults:" + parent) | defaults = frappe.cache().get_value("__defaults:" + parent) | ||||
if defaults==None: | if defaults==None: | ||||
# sort descending because first default must get preceedence | |||||
res = frappe.db.sql("""select defkey, defvalue from `tabDefaultValue` | res = frappe.db.sql("""select defkey, defvalue from `tabDefaultValue` | ||||
where parent = %s order by creation""", (parent,), as_dict=1) | where parent = %s order by creation""", (parent,), as_dict=1) | ||||
@@ -166,6 +161,7 @@ def get_defaults_for(parent="__default"): | |||||
if d.defvalue not in defaults[d.defkey]: | if d.defvalue not in defaults[d.defkey]: | ||||
defaults[d.defkey].append(d.defvalue) | defaults[d.defkey].append(d.defvalue) | ||||
elif d.defvalue is not None: | elif d.defvalue is not None: | ||||
defaults[d.defkey] = d.defvalue | defaults[d.defkey] = d.defvalue | ||||
@@ -11,37 +11,44 @@ import json | |||||
from frappe.desk.doctype.event.event import get_events | from frappe.desk.doctype.event.event import get_events | ||||
test_records = frappe.get_test_records('Event') | test_records = frappe.get_test_records('Event') | ||||
test_user = "test1@example.com" | |||||
class TestEvent(unittest.TestCase): | class TestEvent(unittest.TestCase): | ||||
# def setUp(self): | # def setUp(self): | ||||
# user = frappe.get_doc("User", "test1@example.com") | |||||
# user = frappe.get_doc("User", test_user) | |||||
# user.add_roles("Website Manager") | # user.add_roles("Website Manager") | ||||
def tearDown(self): | def tearDown(self): | ||||
frappe.set_user("Administrator") | frappe.set_user("Administrator") | ||||
def test_allowed_public(self): | def test_allowed_public(self): | ||||
frappe.set_user("test1@example.com") | |||||
frappe.set_user(test_user) | |||||
doc = frappe.get_doc("Event", frappe.db.get_value("Event", {"subject":"_Test Event 1"})) | doc = frappe.get_doc("Event", frappe.db.get_value("Event", {"subject":"_Test Event 1"})) | ||||
self.assertTrue(frappe.has_permission("Event", doc=doc)) | self.assertTrue(frappe.has_permission("Event", doc=doc)) | ||||
def test_not_allowed_private(self): | def test_not_allowed_private(self): | ||||
frappe.set_user("test1@example.com") | |||||
frappe.set_user(test_user) | |||||
doc = frappe.get_doc("Event", frappe.db.get_value("Event", {"subject":"_Test Event 2"})) | doc = frappe.get_doc("Event", frappe.db.get_value("Event", {"subject":"_Test Event 2"})) | ||||
self.assertFalse(frappe.has_permission("Event", doc=doc)) | self.assertFalse(frappe.has_permission("Event", doc=doc)) | ||||
def test_allowed_private_if_in_event_user(self): | def test_allowed_private_if_in_event_user(self): | ||||
frappe.set_user("test1@example.com") | |||||
doc = frappe.get_doc("Event", frappe.db.get_value("Event", {"subject":"_Test Event 3"})) | |||||
name = frappe.db.get_value("Event", {"subject":"_Test Event 3"}) | |||||
frappe.share.add("Event", name, test_user, "read") | |||||
frappe.set_user(test_user) | |||||
doc = frappe.get_doc("Event", name) | |||||
self.assertTrue(frappe.has_permission("Event", doc=doc)) | self.assertTrue(frappe.has_permission("Event", doc=doc)) | ||||
frappe.set_user("Administrator") | |||||
frappe.share.remove("Event", name, test_user) | |||||
def test_event_list(self): | def test_event_list(self): | ||||
frappe.set_user("test1@example.com") | |||||
frappe.set_user(test_user) | |||||
res = frappe.get_list("Event", filters=[["Event", "subject", "like", "_Test Event%"]], fields=["name", "subject"]) | res = frappe.get_list("Event", filters=[["Event", "subject", "like", "_Test Event%"]], fields=["name", "subject"]) | ||||
self.assertEquals(len(res), 2) | |||||
self.assertEquals(len(res), 1) | |||||
subjects = [r.subject for r in res] | subjects = [r.subject for r in res] | ||||
self.assertTrue("_Test Event 1" in subjects) | self.assertTrue("_Test Event 1" in subjects) | ||||
self.assertTrue("_Test Event 3" in subjects) | |||||
self.assertFalse("_Test Event 3" in subjects) | |||||
self.assertFalse("_Test Event 2" in subjects) | self.assertFalse("_Test Event 2" in subjects) | ||||
def test_revert_logic(self): | def test_revert_logic(self): | ||||
@@ -74,7 +81,7 @@ class TestEvent(unittest.TestCase): | |||||
# add another one | # add another one | ||||
add({ | add({ | ||||
"assign_to": "test1@example.com", | |||||
"assign_to": test_user, | |||||
"doctype": "Event", | "doctype": "Event", | ||||
"name": ev.name, | "name": ev.name, | ||||
"description": "Test Assignment" | "description": "Test Assignment" | ||||
@@ -82,11 +89,11 @@ class TestEvent(unittest.TestCase): | |||||
ev = frappe.get_doc("Event", ev.name) | ev = frappe.get_doc("Event", ev.name) | ||||
self.assertEquals(set(json.loads(ev._assign)), set(["test@example.com", "test1@example.com"])) | |||||
self.assertEquals(set(json.loads(ev._assign)), set(["test@example.com", test_user])) | |||||
# close an assignment | # close an assignment | ||||
todo = frappe.get_doc("ToDo", {"reference_type": ev.doctype, "reference_name": ev.name, | todo = frappe.get_doc("ToDo", {"reference_type": ev.doctype, "reference_name": ev.name, | ||||
"owner": "test1@example.com"}) | |||||
"owner": test_user}) | |||||
todo.status = "Closed" | todo.status = "Closed" | ||||
todo.save() | todo.save() | ||||
@@ -16,8 +16,8 @@ | |||||
"starts_on": "2014-01-01", | "starts_on": "2014-01-01", | ||||
"subject":"_Test Event 3", | "subject":"_Test Event 3", | ||||
"event_type": "Private", | "event_type": "Private", | ||||
"users": [{ | |||||
"person": "test1@example.com" | |||||
}] | |||||
"roles": [ | |||||
{"role": "System Manager"} | |||||
] | |||||
} | } | ||||
] | ] |
@@ -29,7 +29,7 @@ def send(recipients=None, sender=None, doctype='User', email_field='email', | |||||
# No limit for own email settings | # No limit for own email settings | ||||
smtp_server = SMTPServer() | smtp_server = SMTPServer() | ||||
if smtp_server.email_account and not getattr(smtp_server.email_account, | if smtp_server.email_account and not getattr(smtp_server.email_account, | ||||
"from_site_config", False): | |||||
"from_site_config", False) or frappe.flags.in_test: | |||||
monthly_bulk_mail_limit = frappe.conf.get('monthly_bulk_mail_limit') or 500 | monthly_bulk_mail_limit = frappe.conf.get('monthly_bulk_mail_limit') or 500 | ||||
if (this_month + len(recipients)) > monthly_bulk_mail_limit: | if (this_month + len(recipients)) > monthly_bulk_mail_limit: | ||||
@@ -47,8 +47,8 @@ class TestEmailAccount(unittest.TestCase): | |||||
make(subject = "test-mail-000", content="test mail 000", recipients="test_receiver@example.com", | make(subject = "test-mail-000", content="test mail 000", recipients="test_receiver@example.com", | ||||
send_email=True, sender="test_sender@example.com") | send_email=True, sender="test_sender@example.com") | ||||
sent_mail = email.message_from_string(frappe.flags.sent_mail) | |||||
self.assertTrue("test-mail-000" in sent_mail.get("Subject")) | |||||
mail = email.message_from_string(frappe.get_last_doc("Bulk Email").message) | |||||
self.assertTrue("test-mail-000" in mail.get("Subject")) | |||||
def test_sendmail(self): | def test_sendmail(self): | ||||
frappe.flags.sent_mail = None | frappe.flags.sent_mail = None | ||||
@@ -64,8 +64,7 @@ class TestEmailAccount(unittest.TestCase): | |||||
content="test mail 001", subject="test-mail-002", doctype="Email Account", | content="test mail 001", subject="test-mail-002", doctype="Email Account", | ||||
name="_Test Email Account 1", print_format="Standard", send_email=True) | name="_Test Email Account 1", print_format="Standard", send_email=True) | ||||
sent_mail = email.message_from_string(frappe.flags.sent_mail) | |||||
sent_mail = email.message_from_string(frappe.get_last_doc("Bulk Email").message) | |||||
self.assertTrue("test-mail-002" in sent_mail.get("Subject")) | self.assertTrue("test-mail-002" in sent_mail.get("Subject")) | ||||
def test_threading(self): | def test_threading(self): | ||||
@@ -77,8 +76,7 @@ class TestEmailAccount(unittest.TestCase): | |||||
recipients="test_receiver@example.com", sender="test@example.com", | recipients="test_receiver@example.com", sender="test@example.com", | ||||
send_email=True) | send_email=True) | ||||
sent_mail = email.message_from_string(frappe.flags.sent_mail) | |||||
sent_mail = email.message_from_string(frappe.get_last_doc("Bulk Email").message) | |||||
with open(os.path.join(os.path.dirname(__file__), "test_mails", "reply-1.raw"), "r") as f: | with open(os.path.join(os.path.dirname(__file__), "test_mails", "reply-1.raw"), "r") as f: | ||||
raw = f.read() | raw = f.read() | ||||
raw = raw.replace("<-- in-reply-to -->", sent_mail.get("Message-Id")) | raw = raw.replace("<-- in-reply-to -->", sent_mail.get("Message-Id")) | ||||
@@ -200,7 +200,7 @@ class Email: | |||||
def set_content_and_type(self): | def set_content_and_type(self): | ||||
self.content, self.content_type = '[Blank Email]', 'text/plain' | self.content, self.content_type = '[Blank Email]', 'text/plain' | ||||
if self.text_content: | if self.text_content: | ||||
self.content, self.content_type = EmailReplyParser.parse_reply(self.text_content) | |||||
self.content, self.content_type = EmailReplyParser.parse_reply(self.text_content), 'text/plain' | |||||
else: | else: | ||||
self.content, self.content_type = self.html_content, 'text/html' | self.content, self.content_type = self.html_content, 'text/html' | ||||
@@ -11,14 +11,14 @@ from frappe import _ | |||||
def send(email, as_bulk=False, append_to=None): | def send(email, as_bulk=False, append_to=None): | ||||
"""send the message or add it to Outbox Email""" | """send the message or add it to Outbox Email""" | ||||
if frappe.flags.mute_emails or frappe.conf.get("mute_emails") or False: | |||||
frappe.msgprint(_("Emails are muted")) | |||||
return | |||||
if frappe.flags.in_test: | if frappe.flags.in_test: | ||||
frappe.flags.sent_mail = email.as_string() | frappe.flags.sent_mail = email.as_string() | ||||
return | return | ||||
if frappe.flags.mute_emails or frappe.conf.get("mute_emails") or False: | |||||
frappe.msgprint(_("Emails are muted")) | |||||
return | |||||
try: | try: | ||||
smtpserver = SMTPServer(append_to=append_to) | smtpserver = SMTPServer(append_to=append_to) | ||||
if hasattr(smtpserver, "always_use_login_id_as_sender") and \ | if hasattr(smtpserver, "always_use_login_id_as_sender") and \ | ||||
@@ -8,7 +8,7 @@ import frappe, json | |||||
import frappe.defaults | import frappe.defaults | ||||
import frappe.share | import frappe.share | ||||
import frappe.permissions | import frappe.permissions | ||||
from frappe.utils import flt | |||||
from frappe.utils import flt, cint | |||||
from frappe import _ | from frappe import _ | ||||
class DatabaseQuery(object): | class DatabaseQuery(object): | ||||
@@ -22,8 +22,8 @@ class DatabaseQuery(object): | |||||
self.flags = frappe._dict() | self.flags = frappe._dict() | ||||
def execute(self, query=None, fields=None, filters=None, or_filters=None, | def execute(self, query=None, fields=None, filters=None, or_filters=None, | ||||
docstatus=None, group_by=None, order_by=None, limit_start=0, | |||||
limit_page_length=20, as_list=False, with_childnames=False, debug=False, | |||||
docstatus=None, group_by=None, order_by=None, limit_start=False, | |||||
limit_page_length=False, as_list=False, with_childnames=False, debug=False, | |||||
ignore_permissions=False, user=None): | ignore_permissions=False, user=None): | ||||
if not ignore_permissions and not frappe.has_permission(self.doctype, "read", user=user): | if not ignore_permissions and not frappe.has_permission(self.doctype, "read", user=user): | ||||
raise frappe.PermissionError, self.doctype | raise frappe.PermissionError, self.doctype | ||||
@@ -35,8 +35,8 @@ class DatabaseQuery(object): | |||||
self.docstatus = docstatus or [] | self.docstatus = docstatus or [] | ||||
self.group_by = group_by | self.group_by = group_by | ||||
self.order_by = order_by | self.order_by = order_by | ||||
self.limit_start = int(limit_start) if limit_start else 0 | |||||
self.limit_page_length = int(limit_page_length) if limit_page_length else 20 | |||||
self.limit_start = 0 if (limit_start is False) else cint(limit_start) | |||||
self.limit_page_length = 20 if (limit_page_length is False) else cint(limit_page_length) | |||||
self.with_childnames = with_childnames | self.with_childnames = with_childnames | ||||
self.debug = debug | self.debug = debug | ||||
self.as_list = as_list | self.as_list = as_list | ||||
@@ -126,14 +126,14 @@ class Document(BaseDocument): | |||||
if not self.has_permission(permtype): | if not self.has_permission(permtype): | ||||
self.raise_no_permission_to(permlabel or permtype) | self.raise_no_permission_to(permlabel or permtype) | ||||
def has_permission(self, permtype="read"): | |||||
def has_permission(self, permtype="read", verbose=False): | |||||
"""Call `frappe.has_permission` if `self.flags.ignore_permissions` | """Call `frappe.has_permission` if `self.flags.ignore_permissions` | ||||
is not set. | is not set. | ||||
:param permtype: one of `read`, `write`, `submit`, `cancel`, `delete`""" | :param permtype: one of `read`, `write`, `submit`, `cancel`, `delete`""" | ||||
if self.flags.ignore_permissions: | if self.flags.ignore_permissions: | ||||
return True | return True | ||||
return frappe.has_permission(self.doctype, permtype, self) | |||||
return frappe.has_permission(self.doctype, permtype, self, verbose=verbose) | |||||
def raise_no_permission_to(self, perm_type): | def raise_no_permission_to(self, perm_type): | ||||
"""Raise `frappe.PermissionError`.""" | """Raise `frappe.PermissionError`.""" | ||||
@@ -16,28 +16,33 @@ def check_admin_or_system_manager(user=None): | |||||
if ("System Manager" not in frappe.get_roles(user)) and (user!="Administrator"): | if ("System Manager" not in frappe.get_roles(user)) and (user!="Administrator"): | ||||
frappe.throw(_("Not permitted"), frappe.PermissionError) | frappe.throw(_("Not permitted"), frappe.PermissionError) | ||||
def has_permission(doctype, ptype="read", doc=None, verbose=True, user=None): | |||||
def has_permission(doctype, ptype="read", doc=None, verbose=False, user=None): | |||||
"""check if user has permission""" | """check if user has permission""" | ||||
if not user: user = frappe.session.user | if not user: user = frappe.session.user | ||||
if frappe.is_table(doctype): | if frappe.is_table(doctype): | ||||
if verbose: print "Table type, always true" | |||||
return True | return True | ||||
meta = frappe.get_meta(doctype) | meta = frappe.get_meta(doctype) | ||||
if ptype=="submit" and not cint(meta.is_submittable): | if ptype=="submit" and not cint(meta.is_submittable): | ||||
if verbose: print "Not submittable" | |||||
return False | return False | ||||
if ptype=="import" and not cint(meta.allow_import): | if ptype=="import" and not cint(meta.allow_import): | ||||
if verbose: print "Not importable" | |||||
return False | return False | ||||
if user=="Administrator": | if user=="Administrator": | ||||
if verbose: print "Administrator" | |||||
return True | return True | ||||
def false_if_not_shared(): | def false_if_not_shared(): | ||||
if doc and ptype in ("read", "write", "share"): | if doc and ptype in ("read", "write", "share"): | ||||
shared = frappe.share.get_shared(meta.name, user, [ptype]) | shared = frappe.share.get_shared(meta.name, user, [ptype]) | ||||
if doc.name in shared: | if doc.name in shared: | ||||
if verbose: print "Shared" | |||||
return True | return True | ||||
return False | return False | ||||
@@ -53,11 +58,14 @@ def has_permission(doctype, ptype="read", doc=None, verbose=True, user=None): | |||||
if role_permissions["apply_user_permissions"].get(ptype): | if role_permissions["apply_user_permissions"].get(ptype): | ||||
if not user_has_permission(doc, verbose=verbose, user=user, | if not user_has_permission(doc, verbose=verbose, user=user, | ||||
user_permission_doctypes=role_permissions.get("user_permission_doctypes")): | user_permission_doctypes=role_permissions.get("user_permission_doctypes")): | ||||
if verbose: print "No user permission" | |||||
return false_if_not_shared() | return false_if_not_shared() | ||||
if not has_controller_permissions(doc, ptype, user=user): | if not has_controller_permissions(doc, ptype, user=user): | ||||
if verbose: print "No controller permission" | |||||
return false_if_not_shared() | return false_if_not_shared() | ||||
if verbose: print "Has Role" | |||||
return True | return True | ||||
def get_doc_permissions(doc, verbose=False, user=None): | def get_doc_permissions(doc, verbose=False, user=None): | ||||
@@ -28,6 +28,8 @@ def main(app=None, module=None, doctype=None, verbose=False, tests=(), force=Fal | |||||
for fn in frappe.get_hooks("before_tests", app_name=app): | for fn in frappe.get_hooks("before_tests", app_name=app): | ||||
frappe.get_attr(fn)() | frappe.get_attr(fn)() | ||||
set_test_email_config() | |||||
if doctype: | if doctype: | ||||
ret = run_tests_for_doctype(doctype, verbose=verbose, tests=tests, force=force) | ret = run_tests_for_doctype(doctype, verbose=verbose, tests=tests, force=force) | ||||
elif module: | elif module: | ||||
@@ -42,6 +44,15 @@ def main(app=None, module=None, doctype=None, verbose=False, tests=(), force=Fal | |||||
return ret | return ret | ||||
def set_test_email_config(): | |||||
frappe.conf.update({ | |||||
"auto_email_id": "test@example.com", | |||||
"mail_server": "smtp.example.com", | |||||
"mail_login": "test@example.com", | |||||
"mail_password": "test", | |||||
"admin_password": "admin" | |||||
}) | |||||
def run_all_tests(app=None, verbose=False): | def run_all_tests(app=None, verbose=False): | ||||
import os | import os | ||||
@@ -79,8 +79,8 @@ class TestDataImport(unittest.TestCase): | |||||
content[-1][2] = "__Test Event" | content[-1][2] = "__Test Event" | ||||
content[-1][3] = "Private" | content[-1][3] = "Private" | ||||
content[-1][4] = "2014-01-01 10:00:00.000000" | content[-1][4] = "2014-01-01 10:00:00.000000" | ||||
content[-1][content[15].index("person")] = "Administrator" | |||||
content[-1][content[15].index("role")] = "System Manager" | |||||
importer.upload(content) | importer.upload(content) | ||||
ev = frappe.get_doc("Event", {"subject":"__Test Event"}) | ev = frappe.get_doc("Event", {"subject":"__Test Event"}) | ||||
self.assertTrue("Administrator" in [d.person for d in ev.users]) | |||||
self.assertTrue("System Manager" in [d.role for d in ev.roles]) |
@@ -45,9 +45,9 @@ class TestDocument(unittest.TestCase): | |||||
"subject":"test-doc-test-event 2", | "subject":"test-doc-test-event 2", | ||||
"starts_on": "2014-01-01", | "starts_on": "2014-01-01", | ||||
"event_type": "Public", | "event_type": "Public", | ||||
"users": [ | |||||
"roles": [ | |||||
{ | { | ||||
"person": "Administrator" | |||||
"role": "System Manager" | |||||
} | } | ||||
] | ] | ||||
}) | }) | ||||
@@ -57,7 +57,7 @@ class TestDocument(unittest.TestCase): | |||||
"test-doc-test-event 2") | "test-doc-test-event 2") | ||||
d1 = frappe.get_doc("Event", d.name) | d1 = frappe.get_doc("Event", d.name) | ||||
self.assertTrue(d1.users[0].person, "Administrator") | |||||
self.assertEquals(d1.roles[0].role, "System Manager") | |||||
def test_update(self): | def test_update(self): | ||||
d = self.test_insert() | d = self.test_insert() | ||||
@@ -2,7 +2,6 @@ | |||||
# MIT License. See license.txt | # MIT License. See license.txt | ||||
from __future__ import unicode_literals | from __future__ import unicode_literals | ||||
import os, sys | |||||
import unittest, frappe | import unittest, frappe | ||||
@@ -17,7 +16,7 @@ class TestEmail(unittest.TestCase): | |||||
def test_send(self): | def test_send(self): | ||||
from frappe.email import sendmail | from frappe.email import sendmail | ||||
#sendmail('test@example.com', subject='Test Mail', msg="Test Content") | |||||
sendmail('test@example.com', subject='Test Mail', msg="Test Content") | |||||
def test_bulk(self): | def test_bulk(self): | ||||
from frappe.email.bulk import send | from frappe.email.bulk import send | ||||
@@ -64,7 +63,7 @@ class TestEmail(unittest.TestCase): | |||||
self.assertTrue('Unsubscribe' in bulk[0]['message']) | self.assertTrue('Unsubscribe' in bulk[0]['message']) | ||||
def test_bulk_limit(self): | def test_bulk_limit(self): | ||||
from frappe.email.bulk import unsubscribe, send, BulkLimitCrossedError | |||||
from frappe.email.bulk import send, BulkLimitCrossedError | |||||
self.assertRaises(BulkLimitCrossedError, send, | self.assertRaises(BulkLimitCrossedError, send, | ||||
recipients=['test@example.com']*1000, | recipients=['test@example.com']*1000, | ||||
sender="admin@example.com", | sender="admin@example.com", | ||||