The license.txt file has been replaced with LICENSE for quite a while now. INAL but it didn't seem accurate to say "hey, checkout license.txt although there's no such file". Apart from this, there were inconsistencies in the headers altogether...this change brings consistency.
74 lines
2 KiB
Python
74 lines
2 KiB
Python
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
|
# License: MIT. See LICENSE
|
|
|
|
import unittest
|
|
import frappe
|
|
from frappe.desk.doctype.todo.todo import ToDo
|
|
from frappe.cache_manager import clear_controller_cache
|
|
|
|
class TestHooks(unittest.TestCase):
|
|
def test_hooks(self):
|
|
hooks = frappe.get_hooks()
|
|
self.assertTrue(isinstance(hooks.get("app_name"), list))
|
|
self.assertTrue(isinstance(hooks.get("doc_events"), dict))
|
|
self.assertTrue(isinstance(hooks.get("doc_events").get("*"), dict))
|
|
self.assertTrue(isinstance(hooks.get("doc_events").get("*"), dict))
|
|
self.assertTrue("frappe.desk.notifications.clear_doctype_notifications" in
|
|
hooks.get("doc_events").get("*").get("on_update"))
|
|
|
|
def test_override_doctype_class(self):
|
|
from frappe import hooks
|
|
|
|
# Set hook
|
|
hooks.override_doctype_class = {
|
|
'ToDo': ['frappe.tests.test_hooks.CustomToDo']
|
|
}
|
|
|
|
# Clear cache
|
|
frappe.cache().delete_value('app_hooks')
|
|
clear_controller_cache('ToDo')
|
|
|
|
todo = frappe.get_doc(doctype='ToDo', description='asdf')
|
|
self.assertTrue(isinstance(todo, CustomToDo))
|
|
|
|
def test_has_permission(self):
|
|
from frappe import hooks
|
|
|
|
# Set hook
|
|
address_has_permission_hook = hooks.has_permission.get('Address', [])
|
|
if isinstance(address_has_permission_hook, str):
|
|
address_has_permission_hook = [address_has_permission_hook]
|
|
|
|
address_has_permission_hook.append(
|
|
'frappe.tests.test_hooks.custom_has_permission'
|
|
)
|
|
|
|
hooks.has_permission['Address'] = address_has_permission_hook
|
|
|
|
# Clear cache
|
|
frappe.cache().delete_value('app_hooks')
|
|
|
|
# Init User and Address
|
|
username = "test@example.com"
|
|
user = frappe.get_doc("User", username)
|
|
user.add_roles("System Manager")
|
|
address = frappe.new_doc("Address")
|
|
|
|
# Test!
|
|
self.assertTrue(
|
|
frappe.has_permission("Address", doc=address, user=username)
|
|
)
|
|
|
|
address.flags.dont_touch_me = True
|
|
self.assertFalse(
|
|
frappe.has_permission("Address", doc=address, user=username)
|
|
)
|
|
|
|
|
|
def custom_has_permission(doc, ptype, user):
|
|
if doc.flags.dont_touch_me:
|
|
return False
|
|
|
|
|
|
class CustomToDo(ToDo):
|
|
pass
|