test: Patch hooks for testing (#21702)
* test: Patch hooks for testing * test: hooks patcher --------- Co-authored-by: Ankush Menat <ankush@frappe.io>
This commit is contained in:
parent
b6cd6535db
commit
e38078a69f
5 changed files with 44 additions and 28 deletions
|
|
@ -429,7 +429,3 @@ extend_bootinfo = [
|
|||
"frappe.utils.telemetry.add_bootinfo",
|
||||
"frappe.core.doctype.user_permission.user_permission.send_user_permissions",
|
||||
]
|
||||
|
||||
naming_series_variables = {
|
||||
"PM": "frappe.tests.test_naming.parse_naming_series_variable",
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ from werkzeug.test import TestResponse
|
|||
|
||||
import frappe
|
||||
from frappe.installer import update_site_config
|
||||
from frappe.tests.utils import FrappeTestCase
|
||||
from frappe.tests.utils import FrappeTestCase, patch_hooks
|
||||
from frappe.utils import get_site_url, get_test_client
|
||||
|
||||
try:
|
||||
|
|
@ -312,18 +312,13 @@ class TestReadOnlyMode(FrappeAPITestCase):
|
|||
class TestWSGIApp(FrappeAPITestCase):
|
||||
def test_request_hooks(self):
|
||||
self.addCleanup(lambda: _test_REQ_HOOK.clear())
|
||||
get_hooks = frappe.get_hooks
|
||||
|
||||
def patch_request_hooks(event: str, *args, **kwargs):
|
||||
patched_hooks = {
|
||||
with patch_hooks(
|
||||
{
|
||||
"before_request": ["frappe.tests.test_api.before_request"],
|
||||
"after_request": ["frappe.tests.test_api.after_request"],
|
||||
}
|
||||
if event not in patched_hooks:
|
||||
return get_hooks(event, *args, **kwargs)
|
||||
return patched_hooks[event]
|
||||
|
||||
with patch("frappe.get_hooks", patch_request_hooks):
|
||||
):
|
||||
self.assertIsNone(_test_REQ_HOOK.get("before_request"))
|
||||
self.assertIsNone(_test_REQ_HOOK.get("after_request"))
|
||||
res = self.get("/api/method/ping")
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
# License: MIT. See LICENSE
|
||||
|
||||
from unittest.mock import patch
|
||||
|
||||
import frappe
|
||||
from frappe.core.doctype.doctype.test_doctype import new_doctype
|
||||
from frappe.model.naming import (
|
||||
|
|
@ -12,7 +14,7 @@ from frappe.model.naming import (
|
|||
parse_naming_series,
|
||||
revert_series_if_last,
|
||||
)
|
||||
from frappe.tests.utils import FrappeTestCase
|
||||
from frappe.tests.utils import FrappeTestCase, patch_hooks
|
||||
from frappe.utils import now_datetime, nowdate, nowtime
|
||||
|
||||
|
||||
|
|
@ -379,9 +381,18 @@ class TestNaming(FrappeTestCase):
|
|||
# check naming with custom parser
|
||||
todo = frappe.new_doc("ToDo")
|
||||
series = "TODO-.PM.-.####"
|
||||
name = parse_naming_series(series, doc=todo)
|
||||
expected_name = "TODO-" + nowdate().split("-")[1] + "-" + "0001"
|
||||
self.assertEqual(name, expected_name)
|
||||
|
||||
frappe.clear_cache()
|
||||
with patch_hooks(
|
||||
{
|
||||
"naming_series_variables": {
|
||||
"PM": ["frappe.tests.test_naming.parse_naming_series_variable"],
|
||||
},
|
||||
},
|
||||
):
|
||||
name = parse_naming_series(series, doc=todo)
|
||||
expected_name = "TODO-" + nowdate().split("-")[1] + "-" + "0001"
|
||||
self.assertEqual(name, expected_name)
|
||||
|
||||
|
||||
def parse_naming_series_variable(doc, variable):
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
from unittest.mock import patch
|
||||
|
||||
import frappe
|
||||
from frappe import get_hooks
|
||||
from frappe.tests.utils import FrappeTestCase
|
||||
from frappe.utils import set_request
|
||||
from frappe.website.page_renderers.static_page import StaticPage
|
||||
|
|
@ -73,17 +74,6 @@ class TestWebsite(FrappeTestCase):
|
|||
self.assertEqual(get_home_page(), "login")
|
||||
frappe.set_user("Administrator")
|
||||
|
||||
from frappe import get_hooks
|
||||
|
||||
def patched_get_hooks(hook, value):
|
||||
def wrapper(*args, **kwargs):
|
||||
return_value = get_hooks(*args, **kwargs)
|
||||
if args[0] == hook:
|
||||
return_value = value
|
||||
return return_value
|
||||
|
||||
return wrapper
|
||||
|
||||
# test homepage via hooks
|
||||
clear_website_cache()
|
||||
with patch.object(
|
||||
|
|
@ -402,6 +392,16 @@ class TestWebsite(FrappeTestCase):
|
|||
frappe.set_user("Guest")
|
||||
|
||||
|
||||
def patched_get_hooks(hook, value):
|
||||
def wrapper(*args, **kwargs):
|
||||
return_value = get_hooks(*args, **kwargs)
|
||||
if args[0] == hook:
|
||||
return_value = value
|
||||
return return_value
|
||||
|
||||
return wrapper
|
||||
|
||||
|
||||
class CustomPageRenderer:
|
||||
def __init__(self, path, status_code=None):
|
||||
self.path = path
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import signal
|
|||
import unittest
|
||||
from collections.abc import Sequence
|
||||
from contextlib import contextmanager
|
||||
from unittest.mock import patch
|
||||
|
||||
import frappe
|
||||
from frappe.model.base_document import BaseDocument
|
||||
|
|
@ -207,3 +208,16 @@ def timeout(seconds=30, error_message="Test timed out."):
|
|||
return wrapper
|
||||
|
||||
return decorator
|
||||
|
||||
|
||||
@contextmanager
|
||||
def patch_hooks(overridden_hoooks):
|
||||
get_hooks = frappe.get_hooks
|
||||
|
||||
def patched_hooks(hook=None, default="_KEEP_DEFAULT_LIST", app_name=None):
|
||||
if hook in overridden_hoooks:
|
||||
return overridden_hoooks[hook]
|
||||
return get_hooks(hook, default, app_name)
|
||||
|
||||
with patch.object(frappe, "get_hooks", patched_hooks):
|
||||
yield
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue