seitime-frappe/frappe/tests/test_listview.py
Raffael Meyer 5fce1a57c0
fix: validate fieldname in get_group_by_count (#21932)
* fix: validate fieldname in get_group_by_count

* test: call get_group_by_count with invalid field

* test: is_default_field
2023-08-06 17:33:34 +05:30

96 lines
3.5 KiB
Python

# Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors
# License: MIT. See LICENSE
import json
import frappe
from frappe.desk.listview import get_group_by_count, get_list_settings, set_list_settings
from frappe.desk.reportview import get
from frappe.tests.utils import FrappeTestCase
class TestListView(FrappeTestCase):
def setUp(self):
if frappe.db.exists("List View Settings", "DocType"):
frappe.delete_doc("List View Settings", "DocType")
def test_get_list_settings_without_settings(self):
self.assertIsNone(get_list_settings("DocType"), None)
def test_get_list_settings_with_default_settings(self):
frappe.get_doc({"doctype": "List View Settings", "name": "DocType"}).insert()
settings = get_list_settings("DocType")
self.assertIsNotNone(settings)
self.assertEqual(settings.disable_auto_refresh, 0)
self.assertEqual(settings.disable_count, 0)
self.assertEqual(settings.disable_comment_count, 0)
self.assertEqual(settings.disable_sidebar_stats, 0)
def test_get_list_settings_with_non_default_settings(self):
frappe.get_doc({"doctype": "List View Settings", "name": "DocType", "disable_count": 1}).insert()
settings = get_list_settings("DocType")
self.assertIsNotNone(settings)
self.assertEqual(settings.disable_auto_refresh, 0)
self.assertEqual(settings.disable_count, 1)
self.assertEqual(settings.disable_comment_count, 0)
self.assertEqual(settings.disable_sidebar_stats, 0)
def test_set_list_settings_without_settings(self):
set_list_settings("DocType", json.dumps({}))
settings = frappe.get_doc("List View Settings", "DocType")
self.assertEqual(settings.disable_auto_refresh, 0)
self.assertEqual(settings.disable_count, 0)
self.assertEqual(settings.disable_comment_count, 0)
self.assertEqual(settings.disable_sidebar_stats, 0)
def test_set_list_settings_with_existing_settings(self):
frappe.get_doc({"doctype": "List View Settings", "name": "DocType", "disable_count": 1}).insert()
set_list_settings("DocType", json.dumps({"disable_count": 0, "disable_auto_refresh": 1}))
settings = frappe.get_doc("List View Settings", "DocType")
self.assertEqual(settings.disable_auto_refresh, 1)
self.assertEqual(settings.disable_count, 0)
self.assertEqual(settings.disable_comment_count, 0)
self.assertEqual(settings.disable_sidebar_stats, 0)
def test_list_view_child_table_filter_with_created_by_filter(self):
if frappe.db.exists("Note", "Test created by filter with child table filter"):
frappe.delete_doc("Note", "Test created by filter with child table filter")
doc = frappe.get_doc(
{"doctype": "Note", "title": "Test created by filter with child table filter", "public": 1}
)
doc.append("seen_by", {"user": "Administrator"})
doc.insert()
data = {
d.name: d.count
for d in get_group_by_count("Note", '[["Note Seen By","user","=","Administrator"]]', "owner")
}
self.assertEqual(data["Administrator"], 1)
def test_get_group_by_invalid_field(self):
self.assertRaises(
ValueError,
get_group_by_count,
"Note",
'[["Note Seen By","user","=","Administrator"]]',
"invalid_field",
)
def test_list_view_comment_count(self):
frappe.form_dict.doctype = "DocType"
frappe.form_dict.limit = "1"
frappe.form_dict.fields = [
"`tabDocType`.`name`",
]
for with_comment_count in (1, True, "1"):
frappe.form_dict.with_comment_count = with_comment_count
self.assertEqual(len(get()["values"][0]), 2)
for with_comment_count in (0, False, "0", None):
frappe.form_dict.with_comment_count = with_comment_count
self.assertEqual(len(get()["values"][0]), 1)