test: Add test for dynamic docfield
This commit is contained in:
parent
6502c4b340
commit
57f89c8b05
1 changed files with 51 additions and 5 deletions
|
|
@ -1,11 +1,20 @@
|
|||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
# Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
# License: MIT. See LICENSE
|
||||
import os
|
||||
import unittest
|
||||
from contextlib import contextmanager
|
||||
from datetime import timedelta
|
||||
from unittest.mock import patch
|
||||
|
||||
import frappe
|
||||
from frappe.utils import cint
|
||||
from frappe.model.naming import revert_series_if_last, make_autoname, parse_naming_series
|
||||
from frappe.desk.doctype.note.note import Note
|
||||
from frappe.model.naming import make_autoname, parse_naming_series, revert_series_if_last
|
||||
from frappe.utils import cint, now_datetime
|
||||
|
||||
|
||||
class CustomTestNote(Note):
|
||||
@property
|
||||
def age(self):
|
||||
return now_datetime() - self.creation
|
||||
|
||||
|
||||
class TestDocument(unittest.TestCase):
|
||||
|
|
@ -256,4 +265,41 @@ class TestDocument(unittest.TestCase):
|
|||
def test_limit_for_get(self):
|
||||
doc = frappe.get_doc("DocType", "DocType")
|
||||
# assuming DocType has more that 3 Data fields
|
||||
self.assertEquals(len(doc.get("fields", filters={"fieldtype": "Data"}, limit=3)), 3)
|
||||
self.assertEquals(len(doc.get("fields", filters={"fieldtype": "Data"}, limit=3)), 3)
|
||||
|
||||
def test_dynamic_fields(self):
|
||||
"""Read Only Dynamic fields are accessible via API and Form views, whenever .as_dict is invoked
|
||||
"""
|
||||
frappe.db.delete("Custom Field", {"dt": "Note", "fieldname":"age"})
|
||||
|
||||
def patch_note():
|
||||
return patch("frappe.controllers", new={frappe.local.site: {'Note': CustomTestNote}})
|
||||
|
||||
@contextmanager
|
||||
def customize_note():
|
||||
custom_field = frappe.get_doc({
|
||||
"doctype": "Custom Field",
|
||||
"dt": "Note",
|
||||
"fieldname": "age",
|
||||
"fieldtype": "Data",
|
||||
"read_only": True,
|
||||
})
|
||||
|
||||
try:
|
||||
yield custom_field.insert(ignore_if_duplicate=True)
|
||||
finally:
|
||||
custom_field.delete()
|
||||
|
||||
with patch_note():
|
||||
doc = frappe.get_last_doc("Note")
|
||||
self.assertIsInstance(doc, CustomTestNote)
|
||||
self.assertIsInstance(doc.age, timedelta)
|
||||
self.assertIsNone(doc.as_dict().get("age"))
|
||||
self.assertIsNone(doc.get_valid_dict().get("age"))
|
||||
|
||||
with customize_note(), patch_note():
|
||||
doc = frappe.get_last_doc("Note")
|
||||
self.assertIsInstance(doc, CustomTestNote)
|
||||
self.assertIsInstance(doc.age, timedelta)
|
||||
self.assertIsInstance(doc.as_dict().get("age"), timedelta)
|
||||
self.assertIsInstance(doc.get_valid_dict().get("age"), timedelta)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue