fix: missing order by clause and tests

This commit is contained in:
Ankush Menat 2023-08-10 12:40:23 +05:30
parent de932b464f
commit 8ffd363ccf
2 changed files with 37 additions and 5 deletions

View file

@ -41,10 +41,20 @@ class Recorder(Document):
start = cint(args.get("start")) or 0
page_length = cint(args.get("page_length")) or 20
requests = Recorder.get_filtered_requests(args)[start : start + page_length]
if args.get("order_by"):
sort_key, sort_order = args.get("order_by").split(".")[1].split(" ")
if order_by_statment := args.get("order_by"):
if "." in order_by_statment:
order_by_statment = order_by_statment.split(".")[1]
if " " in order_by_statment:
sort_key, sort_order = order_by_statment.split(" ")
else:
sort_key = order_by_statment
sort_order = "desc"
sort_key = sort_key.replace("`", "")
return sorted(requests, key=lambda r: r[sort_key], reverse=bool(sort_order == "desc"))
return sorted(requests, key=lambda r: r.get(sort_key) or 0, reverse=bool(sort_order == "desc"))
return sorted(requests, key=lambda r: r.duration, reverse=1)
@staticmethod

View file

@ -1,9 +1,31 @@
# Copyright (c) 2023, Frappe Technologies and Contributors
# See license.txt
# import frappe
import frappe
import frappe.recorder
from frappe.tests.utils import FrappeTestCase
from frappe.utils import set_request
class TestRecorder(FrappeTestCase):
pass
def setUp(self):
self.start_recoder()
def start_recoder(self):
frappe.recorder.stop()
frappe.recorder.delete()
set_request()
frappe.recorder.start()
frappe.recorder.record()
def stop_recorder(self):
frappe.recorder.dump()
def test_recorder_list(self):
frappe.get_all("User") # trigger one query
self.stop_recorder()
requests = frappe.get_all("Recorder")
self.assertGreaterEqual(len(requests), 1)
request = frappe.get_doc("Recorder", requests[0].name)
self.assertGreaterEqual(len(request.sql_queries), 1)