From 443c38daa98bcb5edeed39a06441f7a1f26db75f Mon Sep 17 00:00:00 2001 From: David Arnold Date: Thu, 10 Oct 2024 13:24:02 +0200 Subject: [PATCH] refactor: toml test records for readability (#28065) * refactor: toml test records for readability * fix: maintain backwards compatibility * refactor: transform in-tree records * chore: don't use deprecated functions (treewide) * chore: revert migration of tests which depend on old test records list * feat: add cls.globalTestRecords on IntegrationTestCase --- frappe/__init__.py | 13 +- .../doctype/contact/test_records.json | 39 ----- .../doctype/contact/test_records.toml | 27 ++++ .../doctype/salutation/test_records.json | 8 -- .../doctype/salutation/test_records.toml | 6 + .../communication/test_communication.py | 2 +- .../doctype/communication/test_records.json | 10 -- .../doctype/communication/test_records.toml | 7 + .../custom_docperm/test_custom_docperm.py | 2 - .../doctype/custom_role/test_custom_role.py | 2 - .../deleted_document/test_deleted_document.py | 2 - .../core/doctype/docshare/test_records.json | 1 - .../core/doctype/error_log/test_error_log.py | 2 - frappe/core/doctype/language/test_language.py | 2 - .../doctype/module_def/test_module_def.py | 2 - frappe/core/doctype/page/test_page.py | 2 +- frappe/core/doctype/page/test_records.json | 1 - .../core/doctype/patch_log/test_patch_log.py | 2 - frappe/core/doctype/report/test_records.json | 10 -- frappe/core/doctype/report/test_records.toml | 7 + frappe/core/doctype/report/test_report.py | 2 +- frappe/core/doctype/role/test_records.json | 22 --- frappe/core/doctype/role/test_records.toml | 16 +++ frappe/core/doctype/sms_log/test_sms_log.py | 2 - frappe/core/doctype/user/test_records.json | 95 ------------- frappe/core/doctype/user/test_records.toml | 78 ++++++++++ frappe/core/doctype/version/test_records.json | 1 - .../client_script/test_client_script.py | 2 - .../doctype/custom_field/test_custom_field.py | 2 +- .../doctype/custom_field/test_records.json | 1 - .../property_setter/test_property_setter.py | 2 - .../doctype/property_setter/test_records.json | 10 -- .../doctype/property_setter/test_records.toml | 8 ++ frappe/deprecation_dumpster.py | 29 ++++ frappe/desk/doctype/event/test_records.json | 23 --- frappe/desk/doctype/event/test_records.toml | 18 +++ .../doctype/kanban_board/test_kanban_board.py | 2 - frappe/desk/doctype/note/test_note.py | 2 +- frappe/desk/doctype/note/test_records.json | 7 - frappe/desk/doctype/note/test_records.toml | 4 + .../test_auto_email_report.py | 2 - .../doctype/email_account/test_records.json | 29 ---- .../doctype/email_account/test_records.toml | 32 +++++ .../doctype/email_domain/test_email_domain.py | 2 +- .../doctype/email_domain/test_records.json | 32 ----- .../doctype/email_domain/test_records.toml | 28 ++++ .../email_flag_queue/test_email_flag_queue.py | 2 - .../doctype/email_group/test_email_group.py | 2 - .../doctype/email_group/test_records.json | 6 - .../doctype/email_group/test_records.toml | 3 + .../test_email_group_member.py | 2 - .../test_email_unsubscribe.py | 2 - .../doctype/notification/test_records.json | 76 ---------- .../doctype/notification/test_records.toml | 69 +++++++++ .../unhandled_email/test_unhandled_email.py | 2 - frappe/geo/doctype/country/test_country.py | 2 +- frappe/geo/doctype/country/test_records.json | 6 - frappe/geo/doctype/country/test_records.toml | 3 + frappe/geo/doctype/currency/test_records.json | 1 - .../doctype/connected_app/test_records.json | 13 -- .../doctype/connected_app/test_records.toml | 8 ++ .../test_integration_request.py | 2 - .../test_oauth_authorization_code.py | 2 - .../test_oauth_bearer_token.py | 2 - .../doctype/oauth_client/test_oauth_client.py | 2 - .../doctype/token_cache/test_records.json | 18 --- .../doctype/token_cache/test_records.toml | 13 ++ .../doctype/print_format/test_records.json | 9 -- .../doctype/print_format/test_records.toml | 6 + frappe/tests/classes/integration_test_case.py | 2 + frappe/tests/utils/generators.py | 134 ++++++++++++------ .../doctype/blog_category/test_records.json | 17 --- .../doctype/blog_category/test_records.toml | 12 ++ .../doctype/blog_post/test_records.json | 38 ----- .../doctype/blog_post/test_records.toml | 32 +++++ .../website/doctype/blogger/test_blogger.py | 2 +- .../website/doctype/blogger/test_records.json | 17 --- .../website/doctype/blogger/test_records.toml | 12 ++ .../doctype/help_article/test_help_article.py | 2 - .../help_category/test_help_category.py | 2 - .../doctype/web_form/test_records.json | 52 ------- .../doctype/web_form/test_records.toml | 49 +++++++ .../doctype/web_page/test_records.json | 35 ----- .../doctype/web_page/test_records.toml | 28 ++++ .../website_sidebar/test_website_sidebar.py | 2 - .../test_website_slideshow.py | 2 - .../doctype/workflow/test_records.json | 1 - .../doctype/workflow_state/test_records.json | 1 - .../workflow_state/test_workflow_state.py | 2 +- 89 files changed, 595 insertions(+), 696 deletions(-) delete mode 100644 frappe/contacts/doctype/contact/test_records.json create mode 100644 frappe/contacts/doctype/contact/test_records.toml delete mode 100644 frappe/contacts/doctype/salutation/test_records.json create mode 100644 frappe/contacts/doctype/salutation/test_records.toml delete mode 100644 frappe/core/doctype/communication/test_records.json create mode 100644 frappe/core/doctype/communication/test_records.toml delete mode 100644 frappe/core/doctype/docshare/test_records.json delete mode 100644 frappe/core/doctype/page/test_records.json delete mode 100644 frappe/core/doctype/report/test_records.json create mode 100644 frappe/core/doctype/report/test_records.toml delete mode 100644 frappe/core/doctype/role/test_records.json create mode 100644 frappe/core/doctype/role/test_records.toml delete mode 100644 frappe/core/doctype/user/test_records.json create mode 100644 frappe/core/doctype/user/test_records.toml delete mode 100644 frappe/core/doctype/version/test_records.json delete mode 100644 frappe/custom/doctype/custom_field/test_records.json delete mode 100644 frappe/custom/doctype/property_setter/test_records.json create mode 100644 frappe/custom/doctype/property_setter/test_records.toml delete mode 100644 frappe/desk/doctype/event/test_records.json create mode 100644 frappe/desk/doctype/event/test_records.toml delete mode 100644 frappe/desk/doctype/note/test_records.json create mode 100644 frappe/desk/doctype/note/test_records.toml delete mode 100644 frappe/email/doctype/email_account/test_records.json create mode 100644 frappe/email/doctype/email_account/test_records.toml delete mode 100644 frappe/email/doctype/email_domain/test_records.json create mode 100644 frappe/email/doctype/email_domain/test_records.toml delete mode 100644 frappe/email/doctype/email_group/test_records.json create mode 100644 frappe/email/doctype/email_group/test_records.toml delete mode 100644 frappe/email/doctype/notification/test_records.json create mode 100644 frappe/email/doctype/notification/test_records.toml delete mode 100644 frappe/geo/doctype/country/test_records.json create mode 100644 frappe/geo/doctype/country/test_records.toml delete mode 100644 frappe/geo/doctype/currency/test_records.json delete mode 100644 frappe/integrations/doctype/connected_app/test_records.json create mode 100644 frappe/integrations/doctype/connected_app/test_records.toml delete mode 100644 frappe/integrations/doctype/token_cache/test_records.json create mode 100644 frappe/integrations/doctype/token_cache/test_records.toml delete mode 100644 frappe/printing/doctype/print_format/test_records.json create mode 100644 frappe/printing/doctype/print_format/test_records.toml delete mode 100644 frappe/website/doctype/blog_category/test_records.json create mode 100644 frappe/website/doctype/blog_category/test_records.toml delete mode 100644 frappe/website/doctype/blog_post/test_records.json create mode 100644 frappe/website/doctype/blog_post/test_records.toml delete mode 100644 frappe/website/doctype/blogger/test_records.json create mode 100644 frappe/website/doctype/blogger/test_records.toml delete mode 100644 frappe/website/doctype/web_form/test_records.json create mode 100644 frappe/website/doctype/web_form/test_records.toml delete mode 100644 frappe/website/doctype/web_page/test_records.json create mode 100644 frappe/website/doctype/web_page/test_records.toml delete mode 100644 frappe/workflow/doctype/workflow/test_records.json delete mode 100644 frappe/workflow/doctype/workflow_state/test_records.json diff --git a/frappe/__init__.py b/frappe/__init__.py index 9872103e8b..3ce7ee2c84 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -2168,18 +2168,7 @@ def are_emails_muted(): return flags.mute_emails or cint(conf.get("mute_emails")) -def get_test_records(doctype): - """Return list of objects from `test_records.json` in the given doctype's folder.""" - from frappe.modules import get_doctype_module, get_module_path - - path = os.path.join( - get_module_path(get_doctype_module(doctype)), "doctype", scrub(doctype), "test_records.json" - ) - if os.path.exists(path): - with open(path) as f: - return json.loads(f.read()) - else: - return [] +from frappe.deprecation_dumpster import frappe_get_test_records as get_test_records def format_value(*args, **kwargs): diff --git a/frappe/contacts/doctype/contact/test_records.json b/frappe/contacts/doctype/contact/test_records.json deleted file mode 100644 index 35fff587ae..0000000000 --- a/frappe/contacts/doctype/contact/test_records.json +++ /dev/null @@ -1,39 +0,0 @@ -[ - { - "doctype": "Contact", - "salutation": "Mr", - "first_name": "_Test Contact For _Test Customer", - "is_primary_contact": 1, - "status": "Open", - "email_ids": [ - { - "email_id": "test_contact@example.com", - "is_primary": 1 - } - ], - "phone_nos": [ - { - "phone": "+91 0000000000", - "is_primary_phone": 1 - } - ] - }, - { - "doctype": "Contact", - "first_name": "_Test Contact For _Test Supplier", - "is_primary_contact": 1, - "status": "Open", - "email_ids": [ - { - "email_id": "test_contact@example.com", - "is_primary": 1 - } - ], - "phone_nos": [ - { - "phone": "+91 0000000001", - "is_primary_phone": 1 - } - ] - } -] diff --git a/frappe/contacts/doctype/contact/test_records.toml b/frappe/contacts/doctype/contact/test_records.toml new file mode 100644 index 0000000000..f815732ae7 --- /dev/null +++ b/frappe/contacts/doctype/contact/test_records.toml @@ -0,0 +1,27 @@ +[[Contact]] +salutation = "Mr" +first_name = "_Test Contact For _Test Customer" +is_primary_contact = 1 +status = "Open" +[[Contact.email_ids]] +email_id = "test_contact@example.com" +is_primary = 1 + +[[Contact.phone_nos]] +phone = "+91 0000000000" +is_primary_phone = 1 + + +[[Contact]] +first_name = "_Test Contact For _Test Supplier" +is_primary_contact = 1 +status = "Open" +[[Contact.email_ids]] +email_id = "test_contact@example.com" +is_primary = 1 + +[[Contact.phone_nos]] +phone = "+91 0000000001" +is_primary_phone = 1 + + diff --git a/frappe/contacts/doctype/salutation/test_records.json b/frappe/contacts/doctype/salutation/test_records.json deleted file mode 100644 index 3a87fffff0..0000000000 --- a/frappe/contacts/doctype/salutation/test_records.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "salutation": "Mr" - }, - { - "salutation": "Mrs" - } -] \ No newline at end of file diff --git a/frappe/contacts/doctype/salutation/test_records.toml b/frappe/contacts/doctype/salutation/test_records.toml new file mode 100644 index 0000000000..e3c0303cc1 --- /dev/null +++ b/frappe/contacts/doctype/salutation/test_records.toml @@ -0,0 +1,6 @@ +[[Salutation]] +salutation = "Mr" + +[[Salutation]] +salutation = "Mrs" + diff --git a/frappe/core/doctype/communication/test_communication.py b/frappe/core/doctype/communication/test_communication.py index 6fbd0347c6..7adc1d148a 100644 --- a/frappe/core/doctype/communication/test_communication.py +++ b/frappe/core/doctype/communication/test_communication.py @@ -12,7 +12,7 @@ if TYPE_CHECKING: from frappe.contacts.doctype.contact.contact import Contact from frappe.email.doctype.email_account.email_account import EmailAccount -test_records = frappe.get_test_records("Communication") +test_records = frappe.tests.utils.load_test_records_for("Communication") class UnitTestCommunication(UnitTestCase): diff --git a/frappe/core/doctype/communication/test_records.json b/frappe/core/doctype/communication/test_records.json deleted file mode 100644 index a69d3e9570..0000000000 --- a/frappe/core/doctype/communication/test_records.json +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "doctype": "Communication", - "name": "_Test Communication 1", - "subject": "Test Subject", - "sent_or_received": "Received", - "parenttype": "User", - "parent": "Administrator" - } -] diff --git a/frappe/core/doctype/communication/test_records.toml b/frappe/core/doctype/communication/test_records.toml new file mode 100644 index 0000000000..824d0400a8 --- /dev/null +++ b/frappe/core/doctype/communication/test_records.toml @@ -0,0 +1,7 @@ +[[Communication]] +name = "_Test Communication 1" +subject = "Test Subject" +sent_or_received = "Received" +parenttype = "User" +parent = "Administrator" + diff --git a/frappe/core/doctype/custom_docperm/test_custom_docperm.py b/frappe/core/doctype/custom_docperm/test_custom_docperm.py index b4b6bd1eb2..5cec4ca73a 100644 --- a/frappe/core/doctype/custom_docperm/test_custom_docperm.py +++ b/frappe/core/doctype/custom_docperm/test_custom_docperm.py @@ -2,8 +2,6 @@ # License: MIT. See LICENSE from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Custom DocPerm') - class UnitTestCustomDocperm(UnitTestCase): """ diff --git a/frappe/core/doctype/custom_role/test_custom_role.py b/frappe/core/doctype/custom_role/test_custom_role.py index 2f6677fa30..8ee12abd5d 100644 --- a/frappe/core/doctype/custom_role/test_custom_role.py +++ b/frappe/core/doctype/custom_role/test_custom_role.py @@ -2,8 +2,6 @@ # License: MIT. See LICENSE from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Custom Role') - class UnitTestCustomRole(UnitTestCase): """ diff --git a/frappe/core/doctype/deleted_document/test_deleted_document.py b/frappe/core/doctype/deleted_document/test_deleted_document.py index ac7ed7ab47..81fa0871cf 100644 --- a/frappe/core/doctype/deleted_document/test_deleted_document.py +++ b/frappe/core/doctype/deleted_document/test_deleted_document.py @@ -2,8 +2,6 @@ # License: MIT. See LICENSE from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Deleted Document') - class UnitTestDeletedDocument(UnitTestCase): """ diff --git a/frappe/core/doctype/docshare/test_records.json b/frappe/core/doctype/docshare/test_records.json deleted file mode 100644 index fe51488c70..0000000000 --- a/frappe/core/doctype/docshare/test_records.json +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/frappe/core/doctype/error_log/test_error_log.py b/frappe/core/doctype/error_log/test_error_log.py index d56a7ef761..e23e7a0e05 100644 --- a/frappe/core/doctype/error_log/test_error_log.py +++ b/frappe/core/doctype/error_log/test_error_log.py @@ -8,8 +8,6 @@ import frappe from frappe.tests import IntegrationTestCase, UnitTestCase from frappe.utils.error import _is_ldap_exception, guess_exception_source -# test_records = frappe.get_test_records('Error Log') - class UnitTestErrorLog(UnitTestCase): """ diff --git a/frappe/core/doctype/language/test_language.py b/frappe/core/doctype/language/test_language.py index bb65991191..e491447230 100644 --- a/frappe/core/doctype/language/test_language.py +++ b/frappe/core/doctype/language/test_language.py @@ -2,8 +2,6 @@ # License: MIT. See LICENSE from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Language') - class UnitTestLanguage(UnitTestCase): """ diff --git a/frappe/core/doctype/module_def/test_module_def.py b/frappe/core/doctype/module_def/test_module_def.py index 83c34ebc40..e7c67c699d 100644 --- a/frappe/core/doctype/module_def/test_module_def.py +++ b/frappe/core/doctype/module_def/test_module_def.py @@ -2,8 +2,6 @@ # License: MIT. See LICENSE from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Module Def') - class UnitTestModuleDef(UnitTestCase): """ diff --git a/frappe/core/doctype/page/test_page.py b/frappe/core/doctype/page/test_page.py index f9a63e867c..abf6ed5c10 100644 --- a/frappe/core/doctype/page/test_page.py +++ b/frappe/core/doctype/page/test_page.py @@ -7,7 +7,7 @@ from unittest.mock import patch import frappe from frappe.tests import IntegrationTestCase, UnitTestCase -test_records = frappe.get_test_records("Page") +test_records = frappe.tests.utils.load_test_records_for("Page") class UnitTestPage(UnitTestCase): diff --git a/frappe/core/doctype/page/test_records.json b/frappe/core/doctype/page/test_records.json deleted file mode 100644 index fe51488c70..0000000000 --- a/frappe/core/doctype/page/test_records.json +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/frappe/core/doctype/patch_log/test_patch_log.py b/frappe/core/doctype/patch_log/test_patch_log.py index d51de16316..98c9e3deb9 100644 --- a/frappe/core/doctype/patch_log/test_patch_log.py +++ b/frappe/core/doctype/patch_log/test_patch_log.py @@ -2,8 +2,6 @@ # License: MIT. See LICENSE from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Patch Log') - class UnitTestPatchLog(UnitTestCase): """ diff --git a/frappe/core/doctype/report/test_records.json b/frappe/core/doctype/report/test_records.json deleted file mode 100644 index cee1a2011c..0000000000 --- a/frappe/core/doctype/report/test_records.json +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "doctype": "Report", - "name": "_Test Report 1", - "report_name": "_Test Report 1", - "report_type": "Query Report", - "is_standard": "No", - "ref_doctype": "Event" - } -] diff --git a/frappe/core/doctype/report/test_records.toml b/frappe/core/doctype/report/test_records.toml new file mode 100644 index 0000000000..0336c0afb3 --- /dev/null +++ b/frappe/core/doctype/report/test_records.toml @@ -0,0 +1,7 @@ +[[Report]] +name = "_Test Report 1" +report_name = "_Test Report 1" +report_type = "Query Report" +is_standard = "No" +ref_doctype = "Event" + diff --git a/frappe/core/doctype/report/test_report.py b/frappe/core/doctype/report/test_report.py index a0898a8ea7..4fc3fcbdbc 100644 --- a/frappe/core/doctype/report/test_report.py +++ b/frappe/core/doctype/report/test_report.py @@ -13,7 +13,7 @@ from frappe.desk.reportview import delete_report from frappe.desk.reportview import save_report as _save_report from frappe.tests import IntegrationTestCase, UnitTestCase -test_records = frappe.get_test_records("Report") +test_records = frappe.tests.utils.load_test_records_for("Report") EXTRA_TEST_RECORD_DEPENDENCIES = ["User"] diff --git a/frappe/core/doctype/role/test_records.json b/frappe/core/doctype/role/test_records.json deleted file mode 100644 index 49442e6e42..0000000000 --- a/frappe/core/doctype/role/test_records.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "doctype": "Role", - "role_name": "_Test Role", - "desk_access": 1 - }, - { - "doctype": "Role", - "role_name": "_Test Role 2", - "desk_access": 1 - }, - { - "doctype": "Role", - "role_name": "_Test Role 3", - "desk_access": 1 - }, - { - "doctype": "Role", - "role_name": "_Test Role 4", - "desk_access": 0 - } -] \ No newline at end of file diff --git a/frappe/core/doctype/role/test_records.toml b/frappe/core/doctype/role/test_records.toml new file mode 100644 index 0000000000..0e40bf529b --- /dev/null +++ b/frappe/core/doctype/role/test_records.toml @@ -0,0 +1,16 @@ +[[Role]] +role_name = "_Test Role" +desk_access = 1 + +[[Role]] +role_name = "_Test Role 2" +desk_access = 1 + +[[Role]] +role_name = "_Test Role 3" +desk_access = 1 + +[[Role]] +role_name = "_Test Role 4" +desk_access = 0 + diff --git a/frappe/core/doctype/sms_log/test_sms_log.py b/frappe/core/doctype/sms_log/test_sms_log.py index 3ff0202388..16a23895e2 100644 --- a/frappe/core/doctype/sms_log/test_sms_log.py +++ b/frappe/core/doctype/sms_log/test_sms_log.py @@ -3,8 +3,6 @@ import unittest -# test_records = frappe.get_test_records('SMS Log') - class TestSMSLog(unittest.TestCase): pass diff --git a/frappe/core/doctype/user/test_records.json b/frappe/core/doctype/user/test_records.json deleted file mode 100644 index 9d1bf0efd4..0000000000 --- a/frappe/core/doctype/user/test_records.json +++ /dev/null @@ -1,95 +0,0 @@ -[ - { - "doctype": "User", - "email": "test@example.com", - "enabled": 1, - "first_name": "_Test", - "new_password": "Eastern_43A1W", - "roles": [ - { - "doctype": "Has Role", - "parentfield": "roles", - "role": "_Test Role" - }, - { - "doctype": "Has Role", - "parentfield": "roles", - "role": "System Manager" - } - ] - }, - { - "doctype": "User", - "email": "test1@example.com", - "first_name": "_Test1", - "new_password": "Eastern_43A1W" - }, - { - "doctype": "User", - "email": "test2@example.com", - "first_name": "_Test2", - "new_password": "Eastern_43A1W", - "enabled": 1 - }, - { - "doctype": "User", - "email": "test3@example.com", - "first_name": "_Test3", - "new_password": "Eastern_43A1W", - "enabled": 1 - }, - { - "doctype": "User", - "email": "test4@example.com", - "first_name": "_Test4", - "new_password": "Eastern_43A1W", - "enabled": 1 - }, - { - "doctype": "User", - "email": "test'5@example.com", - "first_name": "_Test'5", - "new_password": "Eastern_43A1W", - "enabled": 1 - }, - { - "doctype": "User", - "email": "testperm@example.com", - "first_name": "_Test Perm", - "new_password": "Eastern_43A1W", - "enabled": 1 - }, - { - "doctype": "User", - "email": "testdelete@example.com", - "enabled": 1, - "first_name": "_Test", - "new_password": "Eastern_43A1W", - "roles": [ - { - "doctype": "Has Role", - "parentfield": "roles", - "role": "_Test Role 2" - }, - { - "doctype": "Has Role", - "parentfield": "roles", - "role": "System Manager" - } - ] - }, - { - "doctype": "User", - "email": "testpassword@example.com", - "enabled": 1, - "first_name": "_Test", - "new_password": "Eastern_43A1W", - "roles": [ - { - "doctype": "Has Role", - "parentfield": "roles", - "role": "System Manager" - } - ] - } -] diff --git a/frappe/core/doctype/user/test_records.toml b/frappe/core/doctype/user/test_records.toml new file mode 100644 index 0000000000..cd6fe92b1b --- /dev/null +++ b/frappe/core/doctype/user/test_records.toml @@ -0,0 +1,78 @@ +[[User]] +email = "test@example.com" +enabled = 1 +first_name = "_Test" +new_password = "Eastern_43A1W" +[[User.roles]] +doctype = "Has Role" +parentfield = "roles" +role = "_Test Role" + +[[User.roles]] +doctype = "Has Role" +parentfield = "roles" +role = "System Manager" + + +[[User]] +email = "test1@example.com" +first_name = "_Test1" +new_password = "Eastern_43A1W" + +[[User]] +email = "test2@example.com" +first_name = "_Test2" +new_password = "Eastern_43A1W" +enabled = 1 + +[[User]] +email = "test3@example.com" +first_name = "_Test3" +new_password = "Eastern_43A1W" +enabled = 1 + +[[User]] +email = "test4@example.com" +first_name = "_Test4" +new_password = "Eastern_43A1W" +enabled = 1 + +[[User]] +email = "test'5@example.com" +first_name = "_Test'5" +new_password = "Eastern_43A1W" +enabled = 1 + +[[User]] +email = "testperm@example.com" +first_name = "_Test Perm" +new_password = "Eastern_43A1W" +enabled = 1 + +[[User]] +email = "testdelete@example.com" +enabled = 1 +first_name = "_Test" +new_password = "Eastern_43A1W" +[[User.roles]] +doctype = "Has Role" +parentfield = "roles" +role = "_Test Role 2" + +[[User.roles]] +doctype = "Has Role" +parentfield = "roles" +role = "System Manager" + + +[[User]] +email = "testpassword@example.com" +enabled = 1 +first_name = "_Test" +new_password = "Eastern_43A1W" +[[User.roles]] +doctype = "Has Role" +parentfield = "roles" +role = "System Manager" + + diff --git a/frappe/core/doctype/version/test_records.json b/frappe/core/doctype/version/test_records.json deleted file mode 100644 index fe51488c70..0000000000 --- a/frappe/core/doctype/version/test_records.json +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/frappe/custom/doctype/client_script/test_client_script.py b/frappe/custom/doctype/client_script/test_client_script.py index d3078f247a..62e9378071 100644 --- a/frappe/custom/doctype/client_script/test_client_script.py +++ b/frappe/custom/doctype/client_script/test_client_script.py @@ -2,8 +2,6 @@ # License: MIT. See LICENSE from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Client Script') - class UnitTestClientScript(UnitTestCase): """ diff --git a/frappe/custom/doctype/custom_field/test_custom_field.py b/frappe/custom/doctype/custom_field/test_custom_field.py index 7d6f5b8b72..d255a0692b 100644 --- a/frappe/custom/doctype/custom_field/test_custom_field.py +++ b/frappe/custom/doctype/custom_field/test_custom_field.py @@ -9,7 +9,7 @@ from frappe.custom.doctype.custom_field.custom_field import ( ) from frappe.tests import IntegrationTestCase, UnitTestCase -test_records = frappe.get_test_records("Custom Field") +test_records = frappe.tests.utils.load_test_records_for("Custom Field") class UnitTestCustomField(UnitTestCase): diff --git a/frappe/custom/doctype/custom_field/test_records.json b/frappe/custom/doctype/custom_field/test_records.json deleted file mode 100644 index fe51488c70..0000000000 --- a/frappe/custom/doctype/custom_field/test_records.json +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/frappe/custom/doctype/property_setter/test_property_setter.py b/frappe/custom/doctype/property_setter/test_property_setter.py index 878a6ceb9d..59b7bd4d85 100644 --- a/frappe/custom/doctype/property_setter/test_property_setter.py +++ b/frappe/custom/doctype/property_setter/test_property_setter.py @@ -2,8 +2,6 @@ # License: MIT. See LICENSE from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Property Setter') - class UnitTestPropertySetter(UnitTestCase): """ diff --git a/frappe/custom/doctype/property_setter/test_records.json b/frappe/custom/doctype/property_setter/test_records.json deleted file mode 100644 index 3c084b424e..0000000000 --- a/frappe/custom/doctype/property_setter/test_records.json +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "doc_type": "User", - "doctype_or_field": "DocField", - "field_name": "location", - "property": "in_list_view", - "property_type": "Check", - "value": "1" - } -] \ No newline at end of file diff --git a/frappe/custom/doctype/property_setter/test_records.toml b/frappe/custom/doctype/property_setter/test_records.toml new file mode 100644 index 0000000000..34d097b4ba --- /dev/null +++ b/frappe/custom/doctype/property_setter/test_records.toml @@ -0,0 +1,8 @@ +[["Property Setter"]] +doc_type = "User" +doctype_or_field = "DocField" +field_name = "location" +property = "in_list_view" +property_type = "Check" +value = "1" + diff --git a/frappe/deprecation_dumpster.py b/frappe/deprecation_dumpster.py index c8a4291e69..800c42000a 100644 --- a/frappe/deprecation_dumpster.py +++ b/frappe/deprecation_dumpster.py @@ -566,3 +566,32 @@ def tests_utils_get_dependencies(doctype): ) def test_runner_get_dependencies(doctype): return tests_utils_get_dependencies(doctype) + + +@deprecated( + "frappe.get_test_records", + "2024-20-09", + "v17", + """refactor to use frappe.tests.utils.load_test_records_for +Returns a dict with doctypes as keys and records as list items +Hint: your current doctype and all its dependencies are automatically loaded by the framework. + If you did this manually using test_dependencies = frappe.get_test_records("My Current Doc"), + just remove that line and it should work. + You have access to the global pool of test records via: cls.testRecords + This includes the current records under cls.globalTestRecords["My Current Doc"] -> list + IMPORTANT: Migrate do TOML test records, first: https://github.com/frappe/frappe/pull/28065 +""", +) +def frappe_get_test_records(doctype): + from frappe.tests.utils.generators import load_test_records_for + + records = load_test_records_for(doctype) + if isinstance(records, dict): + _records = [] + for doctype, docs in records.items(): + for doc in docs: + _doc = doc.copy() + _doc["doctype"] = doctype + _records.append(_doc) + return _records + return records diff --git a/frappe/desk/doctype/event/test_records.json b/frappe/desk/doctype/event/test_records.json deleted file mode 100644 index 41d5803083..0000000000 --- a/frappe/desk/doctype/event/test_records.json +++ /dev/null @@ -1,23 +0,0 @@ -[ - { - "doctype": "Event", - "subject":"_Test Event 1", - "starts_on": "2014-01-01", - "event_type": "Public", - "creation": "2014-01-01" - }, - { - "doctype": "Event", - "subject":"_Test Event 2", - "starts_on": "2014-01-01", - "event_type": "Private", - "creation": "2014-01-01" - }, - { - "doctype": "Event", - "subject": "_Test Event 3", - "starts_on": "2014-02-01", - "event_type": "Private", - "creation": "2014-02-01" - } -] diff --git a/frappe/desk/doctype/event/test_records.toml b/frappe/desk/doctype/event/test_records.toml new file mode 100644 index 0000000000..25b2a45750 --- /dev/null +++ b/frappe/desk/doctype/event/test_records.toml @@ -0,0 +1,18 @@ +[[Event]] +subject = "_Test Event 1" +starts_on = "2014-01-01" +event_type = "Public" +creation = "2014-01-01" + +[[Event]] +subject = "_Test Event 2" +starts_on = "2014-01-01" +event_type = "Private" +creation = "2014-01-01" + +[[Event]] +subject = "_Test Event 3" +starts_on = "2014-02-01" +event_type = "Private" +creation = "2014-02-01" + diff --git a/frappe/desk/doctype/kanban_board/test_kanban_board.py b/frappe/desk/doctype/kanban_board/test_kanban_board.py index a884606b78..9d41fe5988 100644 --- a/frappe/desk/doctype/kanban_board/test_kanban_board.py +++ b/frappe/desk/doctype/kanban_board/test_kanban_board.py @@ -2,8 +2,6 @@ # License: MIT. See LICENSE from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Kanban Board') - class UnitTestKanbanBoard(UnitTestCase): """ diff --git a/frappe/desk/doctype/note/test_note.py b/frappe/desk/doctype/note/test_note.py index d588ee643d..b966f3c373 100644 --- a/frappe/desk/doctype/note/test_note.py +++ b/frappe/desk/doctype/note/test_note.py @@ -4,7 +4,7 @@ import frappe from frappe.tests import IntegrationTestCase, UnitTestCase -test_records = frappe.get_test_records("Note") +test_records = frappe.tests.utils.load_test_records_for("Note") class UnitTestNote(UnitTestCase): diff --git a/frappe/desk/doctype/note/test_records.json b/frappe/desk/doctype/note/test_records.json deleted file mode 100644 index f3d7cff22b..0000000000 --- a/frappe/desk/doctype/note/test_records.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - { - "doctype": "Note", - "name": "_Test Note 1", - "title": "Test Note Title" - } -] diff --git a/frappe/desk/doctype/note/test_records.toml b/frappe/desk/doctype/note/test_records.toml new file mode 100644 index 0000000000..62a37ff791 --- /dev/null +++ b/frappe/desk/doctype/note/test_records.toml @@ -0,0 +1,4 @@ +[[Note]] +name = "_Test Note 1" +title = "Test Note Title" + diff --git a/frappe/email/doctype/auto_email_report/test_auto_email_report.py b/frappe/email/doctype/auto_email_report/test_auto_email_report.py index aa30c36349..5bf7db29ff 100644 --- a/frappe/email/doctype/auto_email_report/test_auto_email_report.py +++ b/frappe/email/doctype/auto_email_report/test_auto_email_report.py @@ -7,8 +7,6 @@ from frappe.tests import IntegrationTestCase, UnitTestCase from frappe.utils import add_to_date, get_link_to_form, today from frappe.utils.data import is_html -# test_records = frappe.get_test_records('Auto Email Report') - class UnitTestAutoEmailReport(UnitTestCase): """ diff --git a/frappe/email/doctype/email_account/test_records.json b/frappe/email/doctype/email_account/test_records.json deleted file mode 100644 index 2e204e5277..0000000000 --- a/frappe/email/doctype/email_account/test_records.json +++ /dev/null @@ -1,29 +0,0 @@ -[ - { - "is_default": 1, - "is_global": 1, - "doctype": "Email Account", - "domain":"example.com", - "email_account_name": "_Test Email Account 1", - "enable_outgoing": 1, - "smtp_server": "test.example.com", - "email_id": "test@example.com", - "password": "password", - "add_signature": 1, - "signature": "\nBest Wishes\nTest Signature", - "enable_auto_reply": 1, - "auto_reply_message": "", - "enable_incoming": 1, - "notify_if_unreplied": 1, - "unreplied_for_mins": 20, - "send_notification_to": "test_unreplied@example.com", - "pop3_server": "pop.test.example.com", - "append_to": "ToDo", - "imap_folder": [{"folder_name": "INBOX", "append_to": "ToDo"}, {"folder_name": "Test Folder", "append_to": "Communication"}], - "track_email_status": 1 - }, - { - "doctype": "ToDo", - "description":"test doctype" - } -] diff --git a/frappe/email/doctype/email_account/test_records.toml b/frappe/email/doctype/email_account/test_records.toml new file mode 100644 index 0000000000..30cc710d16 --- /dev/null +++ b/frappe/email/doctype/email_account/test_records.toml @@ -0,0 +1,32 @@ +[["Email Account"]] +is_default = 1 +is_global = 1 +domain = "example.com" +email_account_name = "_Test Email Account 1" +enable_outgoing = 1 +smtp_server = "test.example.com" +email_id = "test@example.com" +password = "password" +add_signature = 1 +signature = "\nBest Wishes\nTest Signature" +enable_auto_reply = 1 +auto_reply_message = "" +enable_incoming = 1 +notify_if_unreplied = 1 +unreplied_for_mins = 20 +send_notification_to = "test_unreplied@example.com" +pop3_server = "pop.test.example.com" +append_to = "ToDo" +track_email_status = 1 +[["Email Account".imap_folder]] +folder_name = "INBOX" +append_to = "ToDo" + +[["Email Account".imap_folder]] +folder_name = "Test Folder" +append_to = "Communication" + + +[[ToDo]] +description = "test doctype" + diff --git a/frappe/email/doctype/email_domain/test_email_domain.py b/frappe/email/doctype/email_domain/test_email_domain.py index 6a852d89b1..bfd5032029 100644 --- a/frappe/email/doctype/email_domain/test_email_domain.py +++ b/frappe/email/doctype/email_domain/test_email_domain.py @@ -4,7 +4,7 @@ import frappe from frappe.tests import IntegrationTestCase, UnitTestCase from frappe.tests.utils import make_test_objects -test_records = frappe.get_test_records("Email Domain") +test_records = frappe.tests.utils.load_test_records_for("Email Domain") class UnitTestEmailDomain(UnitTestCase): diff --git a/frappe/email/doctype/email_domain/test_records.json b/frappe/email/doctype/email_domain/test_records.json deleted file mode 100644 index a6ccc99f06..0000000000 --- a/frappe/email/doctype/email_domain/test_records.json +++ /dev/null @@ -1,32 +0,0 @@ -[ - { - "doctype": "Email Domain", - "domain_name": "test.com", - "email_id": "_test@test.com", - "email_server": "imap.test.com", - "use_imap": "imap.test.com", - "use_ssl": 1, - "use_tls": 1, - "incoming_port": "993", - "attachment_limit": "1", - "smtp_server": "smtp.test.com", - "smtp_port": "587", - "password": "password" - }, - { - "doctype": "Email Account", - "name": "_Test Email Account 1", - "enable_incoming": 1, - "email_id": "_test@test.com", - "domain": "test.com", - "email_server": "imap.test.com", - "use_imap": 1, - "use_ssl": 0, - "use_tls": 1, - "incoming_port": "143", - "attachment_limit": "1", - "smtp_server": "smtp.test.com", - "smtp_port": "587", - "password": "password" - } -] diff --git a/frappe/email/doctype/email_domain/test_records.toml b/frappe/email/doctype/email_domain/test_records.toml new file mode 100644 index 0000000000..3dc4a5351a --- /dev/null +++ b/frappe/email/doctype/email_domain/test_records.toml @@ -0,0 +1,28 @@ +[["Email Domain"]] +domain_name = "test.com" +email_id = "_test@test.com" +email_server = "imap.test.com" +use_imap = "imap.test.com" +use_ssl = 1 +use_tls = 1 +incoming_port = "993" +attachment_limit = "1" +smtp_server = "smtp.test.com" +smtp_port = "587" +password = "password" + +[["Email Account"]] +name = "_Test Email Account 1" +enable_incoming = 1 +email_id = "_test@test.com" +domain = "test.com" +email_server = "imap.test.com" +use_imap = 1 +use_ssl = 0 +use_tls = 1 +incoming_port = "143" +attachment_limit = "1" +smtp_server = "smtp.test.com" +smtp_port = "587" +password = "password" + diff --git a/frappe/email/doctype/email_flag_queue/test_email_flag_queue.py b/frappe/email/doctype/email_flag_queue/test_email_flag_queue.py index 6fdc0a3f0f..7d3effb56a 100644 --- a/frappe/email/doctype/email_flag_queue/test_email_flag_queue.py +++ b/frappe/email/doctype/email_flag_queue/test_email_flag_queue.py @@ -2,8 +2,6 @@ # License: MIT. See LICENSE from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Email Flag Queue') - class UnitTestEmailFlagQueue(UnitTestCase): """ diff --git a/frappe/email/doctype/email_group/test_email_group.py b/frappe/email/doctype/email_group/test_email_group.py index 03566bc881..9774eeac9e 100644 --- a/frappe/email/doctype/email_group/test_email_group.py +++ b/frappe/email/doctype/email_group/test_email_group.py @@ -4,8 +4,6 @@ import frappe from frappe.tests import IntegrationTestCase, UnitTestCase from frappe.utils import validate_url -# test_records = frappe.get_test_records('Email Group') - class UnitTestEmailGroup(UnitTestCase): """ diff --git a/frappe/email/doctype/email_group/test_records.json b/frappe/email/doctype/email_group/test_records.json deleted file mode 100644 index a55b117697..0000000000 --- a/frappe/email/doctype/email_group/test_records.json +++ /dev/null @@ -1,6 +0,0 @@ -[ - { - "doctype": "Email Group", - "title": "_Test Email Group" - } -] diff --git a/frappe/email/doctype/email_group/test_records.toml b/frappe/email/doctype/email_group/test_records.toml new file mode 100644 index 0000000000..3316a85dfc --- /dev/null +++ b/frappe/email/doctype/email_group/test_records.toml @@ -0,0 +1,3 @@ +[["Email Group"]] +title = "_Test Email Group" + diff --git a/frappe/email/doctype/email_group_member/test_email_group_member.py b/frappe/email/doctype/email_group_member/test_email_group_member.py index cde4e74ae1..dd67ea7df6 100644 --- a/frappe/email/doctype/email_group_member/test_email_group_member.py +++ b/frappe/email/doctype/email_group_member/test_email_group_member.py @@ -2,8 +2,6 @@ # License: MIT. See LICENSE from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Email Group Member') - class UnitTestEmailGroupMember(UnitTestCase): """ diff --git a/frappe/email/doctype/email_unsubscribe/test_email_unsubscribe.py b/frappe/email/doctype/email_unsubscribe/test_email_unsubscribe.py index 4355c317a0..0ea9468919 100644 --- a/frappe/email/doctype/email_unsubscribe/test_email_unsubscribe.py +++ b/frappe/email/doctype/email_unsubscribe/test_email_unsubscribe.py @@ -2,8 +2,6 @@ # License: MIT. See LICENSE from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Email Unsubscribe') - class UnitTestEmailUnsubscribe(UnitTestCase): """ diff --git a/frappe/email/doctype/notification/test_records.json b/frappe/email/doctype/notification/test_records.json deleted file mode 100644 index 665f800c0f..0000000000 --- a/frappe/email/doctype/notification/test_records.json +++ /dev/null @@ -1,76 +0,0 @@ -[ - { - "doctype": "Notification", - "subject":"_Test Notification 1", - "document_type": "Communication", - "event": "New", - "attach_print": 0, - "message": "New comment {{ doc.content }} created", - "condition": "doc.communication_type=='Comment'", - "recipients": [ - { "receiver_by_document_field": "owner" } - ] - }, - { - "doctype": "Notification", - "subject":"_Test Notification 2", - "document_type": "Communication", - "event": "Save", - "attach_print": 0, - "message": "New comment {{ doc.content }} saved", - "condition": "doc.communication_type=='Comment'", - "recipients": [ - { "receiver_by_document_field": "owner" } - ], - "set_property_after_alert": "subject", - "property_value": "__testing__" - }, - { - "doctype": "Notification", - "subject":"_Test Notification 3", - "document_type": "Event", - "event": "Save", - "attach_print": 0, - "condition": "doc.event_type=='Public'", - "message": "A new public event {{ doc.subject }} on {{ doc.starts_on }} is created", - "recipients": [ - { "receiver_by_document_field": "owner" } - ] - }, - { - "doctype": "Notification", - "subject":"_Test Notification 4", - "document_type": "Event", - "event": "Value Change", - "attach_print": 0, - "value_changed": "description", - "message": "Description changed", - "recipients": [ - { "receiver_by_document_field": "owner" } - ] - }, - { - "doctype": "Notification", - "subject":"_Test Notification 5", - "document_type": "Event", - "event": "Days Before", - "attach_print": 0, - "date_changed": "starts_on", - "days_in_advance": 2, - "message": "Description changed", - "recipients": [ - { "receiver_by_document_field": "owner" } - ] - }, - { - "doctype": "Notification", - "subject":"_Test Notification 6", - "document_type": "User", - "event": "New", - "attach_print": 0, - "message": "New user {{ doc.name }} created", - "recipients": [ - { "receiver_by_document_field": "owner", "cc": "{{ doc.email }}" } - ] - } -] diff --git a/frappe/email/doctype/notification/test_records.toml b/frappe/email/doctype/notification/test_records.toml new file mode 100644 index 0000000000..49e6aeaeef --- /dev/null +++ b/frappe/email/doctype/notification/test_records.toml @@ -0,0 +1,69 @@ +[[Notification]] +subject = "_Test Notification 1" +document_type = "Communication" +event = "New" +attach_print = 0 +message = "New comment {{ doc.content }} created" +condition = "doc.communication_type=='Comment'" +[[Notification.recipients]] +receiver_by_document_field = "owner" + + +[[Notification]] +subject = "_Test Notification 2" +document_type = "Communication" +event = "Save" +attach_print = 0 +message = "New comment {{ doc.content }} saved" +condition = "doc.communication_type=='Comment'" +set_property_after_alert = "subject" +property_value = "__testing__" +[[Notification.recipients]] +receiver_by_document_field = "owner" + + +[[Notification]] +subject = "_Test Notification 3" +document_type = "Event" +event = "Save" +attach_print = 0 +condition = "doc.event_type=='Public'" +message = "A new public event {{ doc.subject }} on {{ doc.starts_on }} is created" +[[Notification.recipients]] +receiver_by_document_field = "owner" + + +[[Notification]] +subject = "_Test Notification 4" +document_type = "Event" +event = "Value Change" +attach_print = 0 +value_changed = "description" +message = "Description changed" +[[Notification.recipients]] +receiver_by_document_field = "owner" + + +[[Notification]] +subject = "_Test Notification 5" +document_type = "Event" +event = "Days Before" +attach_print = 0 +date_changed = "starts_on" +days_in_advance = 2 +message = "Description changed" +[[Notification.recipients]] +receiver_by_document_field = "owner" + + +[[Notification]] +subject = "_Test Notification 6" +document_type = "User" +event = "New" +attach_print = 0 +message = "New user {{ doc.name }} created" +[[Notification.recipients]] +receiver_by_document_field = "owner" +cc = "{{ doc.email }}" + + diff --git a/frappe/email/doctype/unhandled_email/test_unhandled_email.py b/frappe/email/doctype/unhandled_email/test_unhandled_email.py index 751e094d98..f7c148e8ec 100644 --- a/frappe/email/doctype/unhandled_email/test_unhandled_email.py +++ b/frappe/email/doctype/unhandled_email/test_unhandled_email.py @@ -2,8 +2,6 @@ # License: MIT. See LICENSE from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Unhandled Emails') - class UnitTestUnhandledEmail(UnitTestCase): """ diff --git a/frappe/geo/doctype/country/test_country.py b/frappe/geo/doctype/country/test_country.py index a58bc900b8..a60cf09a15 100644 --- a/frappe/geo/doctype/country/test_country.py +++ b/frappe/geo/doctype/country/test_country.py @@ -9,7 +9,7 @@ from frappe.geo.doctype.country.country import ( from frappe.geo.doctype.currency.currency import enable_default_currencies from frappe.tests import IntegrationTestCase, UnitTestCase -test_records = frappe.get_test_records("Country") +test_records = frappe.tests.utils.load_test_records_for("Country") def get_table_snapshot(doctype): diff --git a/frappe/geo/doctype/country/test_records.json b/frappe/geo/doctype/country/test_records.json deleted file mode 100644 index 5a7c8a5568..0000000000 --- a/frappe/geo/doctype/country/test_records.json +++ /dev/null @@ -1,6 +0,0 @@ -[ - { - "country_name": "_Test Country", - "doctype": "Country" - } -] \ No newline at end of file diff --git a/frappe/geo/doctype/country/test_records.toml b/frappe/geo/doctype/country/test_records.toml new file mode 100644 index 0000000000..68b9c67cbc --- /dev/null +++ b/frappe/geo/doctype/country/test_records.toml @@ -0,0 +1,3 @@ +[[Country]] +country_name = "_Test Country" + diff --git a/frappe/geo/doctype/currency/test_records.json b/frappe/geo/doctype/currency/test_records.json deleted file mode 100644 index 0637a088a0..0000000000 --- a/frappe/geo/doctype/currency/test_records.json +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/frappe/integrations/doctype/connected_app/test_records.json b/frappe/integrations/doctype/connected_app/test_records.json deleted file mode 100644 index 4d19369248..0000000000 --- a/frappe/integrations/doctype/connected_app/test_records.json +++ /dev/null @@ -1,13 +0,0 @@ -[ - { - "doctype": "Connected App", - "provider_name": "frappe", - "client_id": "test_client_id", - "client_secret": "test_client_secret", - "scopes": [ - { - "scope": "all" - } - ] - } -] diff --git a/frappe/integrations/doctype/connected_app/test_records.toml b/frappe/integrations/doctype/connected_app/test_records.toml new file mode 100644 index 0000000000..1e290d3d0c --- /dev/null +++ b/frappe/integrations/doctype/connected_app/test_records.toml @@ -0,0 +1,8 @@ +[["Connected App"]] +provider_name = "frappe" +client_id = "test_client_id" +client_secret = "test_client_secret" +[["Connected App".scopes]] +scope = "all" + + diff --git a/frappe/integrations/doctype/integration_request/test_integration_request.py b/frappe/integrations/doctype/integration_request/test_integration_request.py index a218fe0fa8..f7266f7563 100644 --- a/frappe/integrations/doctype/integration_request/test_integration_request.py +++ b/frappe/integrations/doctype/integration_request/test_integration_request.py @@ -3,8 +3,6 @@ import frappe from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Integration Request') - class UnitTestIntegrationRequest(UnitTestCase): """ diff --git a/frappe/integrations/doctype/oauth_authorization_code/test_oauth_authorization_code.py b/frappe/integrations/doctype/oauth_authorization_code/test_oauth_authorization_code.py index a5824be73f..ca36fdee95 100644 --- a/frappe/integrations/doctype/oauth_authorization_code/test_oauth_authorization_code.py +++ b/frappe/integrations/doctype/oauth_authorization_code/test_oauth_authorization_code.py @@ -3,8 +3,6 @@ import frappe from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('OAuth Authorization Code') - class UnitTestOauthAuthorizationCode(UnitTestCase): """ diff --git a/frappe/integrations/doctype/oauth_bearer_token/test_oauth_bearer_token.py b/frappe/integrations/doctype/oauth_bearer_token/test_oauth_bearer_token.py index 8c5afea9e4..c3c6fff5c4 100644 --- a/frappe/integrations/doctype/oauth_bearer_token/test_oauth_bearer_token.py +++ b/frappe/integrations/doctype/oauth_bearer_token/test_oauth_bearer_token.py @@ -3,8 +3,6 @@ import frappe from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('OAuth Bearer Token') - class UnitTestOauthBearerToken(UnitTestCase): """ diff --git a/frappe/integrations/doctype/oauth_client/test_oauth_client.py b/frappe/integrations/doctype/oauth_client/test_oauth_client.py index 8a87464aa9..136ce8adb4 100644 --- a/frappe/integrations/doctype/oauth_client/test_oauth_client.py +++ b/frappe/integrations/doctype/oauth_client/test_oauth_client.py @@ -3,8 +3,6 @@ import frappe from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('OAuth Client') - class UnitTestOauthClient(UnitTestCase): """ diff --git a/frappe/integrations/doctype/token_cache/test_records.json b/frappe/integrations/doctype/token_cache/test_records.json deleted file mode 100644 index 05840221a6..0000000000 --- a/frappe/integrations/doctype/token_cache/test_records.json +++ /dev/null @@ -1,18 +0,0 @@ -[ - { - "doctype": "Token Cache", - "user": "test@example.com", - "access_token": "test-access-token", - "refresh_token": "test-refresh-token", - "token_type": "Bearer", - "expires_in": 1000, - "scopes": [ - { - "scope": "all" - }, - { - "scope": "openid" - } - ] - } -] \ No newline at end of file diff --git a/frappe/integrations/doctype/token_cache/test_records.toml b/frappe/integrations/doctype/token_cache/test_records.toml new file mode 100644 index 0000000000..93961fa2ce --- /dev/null +++ b/frappe/integrations/doctype/token_cache/test_records.toml @@ -0,0 +1,13 @@ +[["Token Cache"]] +user = "test@example.com" +access_token = "test-access-token" +refresh_token = "test-refresh-token" +token_type = "Bearer" +expires_in = 1000 +[["Token Cache".scopes]] +scope = "all" + +[["Token Cache".scopes]] +scope = "openid" + + diff --git a/frappe/printing/doctype/print_format/test_records.json b/frappe/printing/doctype/print_format/test_records.json deleted file mode 100644 index c77238326b..0000000000 --- a/frappe/printing/doctype/print_format/test_records.json +++ /dev/null @@ -1,9 +0,0 @@ -[ - { - "doctype": "Print Format", - "name": "_Test Print Format 1", - "module": "Core", - "doc_type": "User", - "html": "" - } -] diff --git a/frappe/printing/doctype/print_format/test_records.toml b/frappe/printing/doctype/print_format/test_records.toml new file mode 100644 index 0000000000..5d38137d62 --- /dev/null +++ b/frappe/printing/doctype/print_format/test_records.toml @@ -0,0 +1,6 @@ +[["Print Format"]] +name = "_Test Print Format 1" +module = "Core" +doc_type = "User" +html = "" + diff --git a/frappe/tests/classes/integration_test_case.py b/frappe/tests/classes/integration_test_case.py index 5b7cf37d16..b52095962f 100644 --- a/frappe/tests/classes/integration_test_case.py +++ b/frappe/tests/classes/integration_test_case.py @@ -1,6 +1,7 @@ import copy import logging from contextlib import AbstractContextManager, contextmanager +from types import MappingProxyType import frappe from frappe.utils import cint @@ -57,6 +58,7 @@ class IntegrationTestCase(UnitTestCase): cls._newly_created_test_records += make_test_records(doctype) # flush changes done so far to avoid flake frappe.db.commit() + cls.globalTestRecords = MappingProxyType(frappe.local.test_objects) if cls.SHOW_TRANSACTION_COMMIT_WARNINGS: frappe.db.before_commit.add(_commit_watcher) diff --git a/frappe/tests/utils/generators.py b/frappe/tests/utils/generators.py index 0540609b77..377f3b1611 100644 --- a/frappe/tests/utils/generators.py +++ b/frappe/tests/utils/generators.py @@ -1,13 +1,19 @@ import datetime import json import logging +import os +from collections import defaultdict from functools import cache from importlib import reload from pathlib import Path +from types import MappingProxyType +from typing import Any + +import tomli import frappe from frappe.model.naming import revert_series_if_last -from frappe.modules import load_doctype_module +from frappe.modules import get_doctype_module, get_module_path, load_doctype_module logger = logging.getLogger(__name__) testing_logger = logging.getLogger("frappe.testing.generators") @@ -21,6 +27,7 @@ __all__ = [ "make_test_records", "make_test_records_for_doctype", "make_test_objects", + "load_test_records_for", ] @@ -145,13 +152,40 @@ def _make_test_record(doctype, force=False, commit=False): elif hasattr(test_module, "test_records"): yield from _make_test_objects(doctype, test_module.test_records, force, commit=commit) else: - test_records = frappe.get_test_records(doctype) + test_records = load_test_records_for(doctype) if test_records: yield from _make_test_objects(doctype, test_records, force, commit=commit) else: print_mandatory_fields(doctype) +def load_test_records_for(doctype) -> dict[str, Any] | list: + module_path = get_module_path(get_doctype_module(doctype), "doctype", frappe.scrub(doctype)) + + json_path = os.path.join(module_path, "test_records.json") + if os.path.exists(json_path): + from frappe.deprecation_dumpster import deprecation_warning + + deprecation_warning( + "2024-10-09", + "v17", + """Test records have been tranformed from json to toml for better readability and devx. +Please run the script from the PR description and remove the json file afterwards: +https://github.com/frappe/frappe/pull/28065 +""", + ) + with open(json_path) as f: + return json.load(f) + + toml_path = os.path.join(module_path, "test_records.toml") + if os.path.exists(toml_path): + with open(toml_path, "rb") as f: + return tomli.load(f) + + else: + return {} + + def _make_test_objects(doctype, test_records=None, reset=False, commit=False): """Generator function to make test objects""" # NOTE: We use file-based, per-site persistence visited log in order to not @@ -160,68 +194,76 @@ def _make_test_objects(doctype, test_records=None, reset=False, commit=False): if not reset and doctype in test_record_log_instance.get(): yield from test_record_log_instance.yield_names(doctype) + if test_records is None: + test_records = load_test_records_for(doctype) + + # Deprecated JSON import - make it comply + if isinstance(test_records, list): + _test_records = defaultdict(list) + for _record in test_records: + _dt = _record.get("doctype", doctype) + _test_records[_dt].append(_record) + test_records = _test_records + + for _doctype, records in test_records.items(): + for record in records: + yield from _make_test_object(_doctype, record) + + +def _make_test_object(doctype, record, reset=False, commit=False): def revert_naming(d): if getattr(d, "naming_series", None): revert_series_if_last(d.naming_series, d.name) - if test_records is None: - test_records = frappe.get_test_records(doctype) + if not reset: + frappe.db.savepoint("creating_test_record") - for doc in test_records: - if not reset: - frappe.db.savepoint("creating_test_record") + if not record.get("doctype"): + record["doctype"] = doctype - if not doc.get("doctype"): - doc["doctype"] = doctype + d = frappe.copy_doc(record) - d = frappe.copy_doc(doc) + if d.meta.get_field("naming_series"): + if not d.naming_series: + d.naming_series = "_T-" + d.doctype + "-" - if d.meta.get_field("naming_series"): - if not d.naming_series: - d.naming_series = "_T-" + d.doctype + "-" + if record.get("name"): + d.name = record.get("name") + else: + d.set_new_name() - if doc.get("name"): - d.name = doc.get("name") - else: - d.set_new_name() + if frappe.db.exists(d.doctype, d.name) and not reset: + frappe.db.rollback(save_point="creating_test_record") + # do not create test records, if already exists + return - if frappe.db.exists(d.doctype, d.name) and not reset: - frappe.db.rollback(save_point="creating_test_record") - # do not create test records, if already exists - continue + # submit if docstatus is set to 1 for test record + docstatus = d.docstatus - # submit if docstatus is set to 1 for test record - docstatus = d.docstatus + d.docstatus = 0 - d.docstatus = 0 + try: + d.run_method("before_test_insert") + d.insert(ignore_if_duplicate=True) - try: - d.run_method("before_test_insert") - d.insert(ignore_if_duplicate=True) + if docstatus == 1: + d.submit() - if docstatus == 1: - d.submit() + except frappe.NameError: + revert_naming(d) - except frappe.NameError: + except Exception as e: + if d.flags.ignore_these_exceptions_in_test and e.__class__ in d.flags.ignore_these_exceptions_in_test: revert_naming(d) + else: + logger.debug(f"Error in making test record for {d.doctype} {d.name}") + raise - except Exception as e: - if ( - d.flags.ignore_these_exceptions_in_test - and e.__class__ in d.flags.ignore_these_exceptions_in_test - ): - revert_naming(d) - else: - logger.debug(f"Error in making test record for {d.doctype} {d.name}") - raise + if commit: + frappe.db.commit() - if commit: - frappe.db.commit() - - frappe.local.test_objects[doctype].append(d.name) - yield d.name - - test_record_log_instance.add(doctype, frappe.local.test_objects[doctype]) + frappe.local.test_objects[doctype].append(MappingProxyType(d.as_dict())) + yield d.name def print_mandatory_fields(doctype): diff --git a/frappe/website/doctype/blog_category/test_records.json b/frappe/website/doctype/blog_category/test_records.json deleted file mode 100644 index 4bd4ac35b7..0000000000 --- a/frappe/website/doctype/blog_category/test_records.json +++ /dev/null @@ -1,17 +0,0 @@ -[ - { - "doctype": "Blog Category", - "parent_website_route": "blog", - "title": "_Test Blog Category" - }, - { - "doctype": "Blog Category", - "parent_website_route": "blog", - "title": "_Test Blog Category 1" - }, - { - "doctype": "Blog Category", - "parent_website_route": "blog", - "title": "_Test Blog Category 2" - } -] \ No newline at end of file diff --git a/frappe/website/doctype/blog_category/test_records.toml b/frappe/website/doctype/blog_category/test_records.toml new file mode 100644 index 0000000000..136b9783e8 --- /dev/null +++ b/frappe/website/doctype/blog_category/test_records.toml @@ -0,0 +1,12 @@ +[["Blog Category"]] +parent_website_route = "blog" +title = "_Test Blog Category" + +[["Blog Category"]] +parent_website_route = "blog" +title = "_Test Blog Category 1" + +[["Blog Category"]] +parent_website_route = "blog" +title = "_Test Blog Category 2" + diff --git a/frappe/website/doctype/blog_post/test_records.json b/frappe/website/doctype/blog_post/test_records.json deleted file mode 100644 index 4b29eadfa4..0000000000 --- a/frappe/website/doctype/blog_post/test_records.json +++ /dev/null @@ -1,38 +0,0 @@ -[ - { - "blog_category": "-test-blog-category", - "blog_intro": "Test Blog Intro", - "blogger": "_Test Blogger", - "content": "Test Blog Content", - "doctype": "Blog Post", - "title": "_Test Blog Post", - "published": 1 - }, - { - "blog_category": "-test-blog-category-1", - "blog_intro": "Test Blog Intro", - "blogger": "_Test Blogger", - "content": "Test Blog Content", - "doctype": "Blog Post", - "title": "_Test Blog Post 1", - "published": 1 - }, - { - "blog_category": "-test-blog-category-1", - "blog_intro": "Test Blog Intro", - "blogger": "_Test Blogger 1", - "content": "Test Blog Content", - "doctype": "Blog Post", - "title": "_Test Blog Post 2", - "published": 0 - }, - { - "blog_category": "-test-blog-category-1", - "blog_intro": "Test Blog Intro", - "blogger": "_Test Blogger 2", - "content": "Test Blog Content", - "doctype": "Blog Post", - "title": "_Test Blog Post 3", - "published": 0 - } -] diff --git a/frappe/website/doctype/blog_post/test_records.toml b/frappe/website/doctype/blog_post/test_records.toml new file mode 100644 index 0000000000..1b903290ff --- /dev/null +++ b/frappe/website/doctype/blog_post/test_records.toml @@ -0,0 +1,32 @@ +[["Blog Post"]] +blog_category = "-test-blog-category" +blog_intro = "Test Blog Intro" +blogger = "_Test Blogger" +content = "Test Blog Content" +title = "_Test Blog Post" +published = 1 + +[["Blog Post"]] +blog_category = "-test-blog-category-1" +blog_intro = "Test Blog Intro" +blogger = "_Test Blogger" +content = "Test Blog Content" +title = "_Test Blog Post 1" +published = 1 + +[["Blog Post"]] +blog_category = "-test-blog-category-1" +blog_intro = "Test Blog Intro" +blogger = "_Test Blogger 1" +content = "Test Blog Content" +title = "_Test Blog Post 2" +published = 0 + +[["Blog Post"]] +blog_category = "-test-blog-category-1" +blog_intro = "Test Blog Intro" +blogger = "_Test Blogger 2" +content = "Test Blog Content" +title = "_Test Blog Post 3" +published = 0 + diff --git a/frappe/website/doctype/blogger/test_blogger.py b/frappe/website/doctype/blogger/test_blogger.py index 44a1e2e2a0..7d0b8dbbec 100644 --- a/frappe/website/doctype/blogger/test_blogger.py +++ b/frappe/website/doctype/blogger/test_blogger.py @@ -3,4 +3,4 @@ import frappe -test_records = frappe.get_test_records("Blogger") +test_records = frappe.tests.utils.load_test_records_for("Blogger") diff --git a/frappe/website/doctype/blogger/test_records.json b/frappe/website/doctype/blogger/test_records.json deleted file mode 100644 index 4ccb7fed32..0000000000 --- a/frappe/website/doctype/blogger/test_records.json +++ /dev/null @@ -1,17 +0,0 @@ -[ - { - "doctype": "Blogger", - "full_name": "_Test Blogger", - "short_name": "_Test Blogger" - }, - { - "doctype": "Blogger", - "full_name": "_Test Blogger 1", - "short_name": "_Test Blogger 1" - }, - { - "doctype": "Blogger", - "full_name": "_Test Blogger 2", - "short_name": "_Test Blogger 2" - } -] \ No newline at end of file diff --git a/frappe/website/doctype/blogger/test_records.toml b/frappe/website/doctype/blogger/test_records.toml new file mode 100644 index 0000000000..ba36b5be12 --- /dev/null +++ b/frappe/website/doctype/blogger/test_records.toml @@ -0,0 +1,12 @@ +[[Blogger]] +full_name = "_Test Blogger" +short_name = "_Test Blogger" + +[[Blogger]] +full_name = "_Test Blogger 1" +short_name = "_Test Blogger 1" + +[[Blogger]] +full_name = "_Test Blogger 2" +short_name = "_Test Blogger 2" + diff --git a/frappe/website/doctype/help_article/test_help_article.py b/frappe/website/doctype/help_article/test_help_article.py index 2f75103dd5..c4a3d8a967 100644 --- a/frappe/website/doctype/help_article/test_help_article.py +++ b/frappe/website/doctype/help_article/test_help_article.py @@ -3,8 +3,6 @@ import frappe from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Help Article') - class UnitTestHelpArticle(UnitTestCase): """ diff --git a/frappe/website/doctype/help_category/test_help_category.py b/frappe/website/doctype/help_category/test_help_category.py index f2569b1283..7f9b19c990 100644 --- a/frappe/website/doctype/help_category/test_help_category.py +++ b/frappe/website/doctype/help_category/test_help_category.py @@ -3,8 +3,6 @@ import frappe from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Help Category') - class UnitTestHelpCategory(UnitTestCase): """ diff --git a/frappe/website/doctype/web_form/test_records.json b/frappe/website/doctype/web_form/test_records.json deleted file mode 100644 index 7139ce25d7..0000000000 --- a/frappe/website/doctype/web_form/test_records.json +++ /dev/null @@ -1,52 +0,0 @@ -[{ - "allow_comments": 0, - "allow_edit": 1, - "allow_multiple": 1, - "show_list": 1, - "doc_type": "Event", - "docstatus": 0, - "doctype": "Web Form", - "introduction_text": "Add events", - "login_required": 1, - "name": "manage-events", - "owner": "Administrator", - "page_name": "manage-events", - "published": 1, - "success_url": "/manage-events", - "title": "Manage Events", - "meta_title": "Test Meta Form Title", - "meta_description": "Test Meta Form Description", - "meta_image": "https://frappe.io/files/frappe.png", - "web_form_fields": [ - { - "doctype": "Web Form Field", - "fieldname": "subject", - "fieldtype": "Data", - "hidden": 0, - "idx": 1, - "label": "Title", - "read_only": 0, - "reqd": 1 - }, - { - "doctype": "Web Form Field", - "fieldname": "starts_on", - "fieldtype": "Date", - "hidden": 0, - "idx": 2, - "label": "Event Date", - "read_only": 0, - "reqd": 1 - }, - { - "doctype": "Web Form Field", - "fieldname": "description", - "fieldtype": "Text", - "hidden": 0, - "idx": 3, - "label": "Description", - "read_only": 0, - "reqd": 0 - } - ] -}] diff --git a/frappe/website/doctype/web_form/test_records.toml b/frappe/website/doctype/web_form/test_records.toml new file mode 100644 index 0000000000..8223e39bb7 --- /dev/null +++ b/frappe/website/doctype/web_form/test_records.toml @@ -0,0 +1,49 @@ +[["Web Form"]] +allow_comments = 0 +allow_edit = 1 +allow_multiple = 1 +show_list = 1 +doc_type = "Event" +docstatus = 0 +introduction_text = "Add events" +login_required = 1 +name = "manage-events" +owner = "Administrator" +page_name = "manage-events" +published = 1 +success_url = "/manage-events" +title = "Manage Events" +meta_title = "Test Meta Form Title" +meta_description = "Test Meta Form Description" +meta_image = "https://frappe.io/files/frappe.png" +[["Web Form".web_form_fields]] +doctype = "Web Form Field" +fieldname = "subject" +fieldtype = "Data" +hidden = 0 +idx = 1 +label = "Title" +read_only = 0 +reqd = 1 + +[["Web Form".web_form_fields]] +doctype = "Web Form Field" +fieldname = "starts_on" +fieldtype = "Date" +hidden = 0 +idx = 2 +label = "Event Date" +read_only = 0 +reqd = 1 + +[["Web Form".web_form_fields]] +doctype = "Web Form Field" +fieldname = "description" +fieldtype = "Text" +hidden = 0 +idx = 3 +label = "Description" +read_only = 0 +reqd = 0 + + diff --git a/frappe/website/doctype/web_page/test_records.json b/frappe/website/doctype/web_page/test_records.json deleted file mode 100644 index 57d5e8282e..0000000000 --- a/frappe/website/doctype/web_page/test_records.json +++ /dev/null @@ -1,35 +0,0 @@ -[ - { - "doctype": "Web Page", - "main_section": "Test Content 1", - "published": 1, - "title": "Test Web Page 1" - }, - { - "doctype": "Web Page", - "main_section": "Test Content 2", - "route": "test-web-page-1/test-web-page-2", - "published": 1, - "title": "Test Web Page 2" - }, - { - "doctype": "Web Page", - "main_section": "Test Content 3", - "route": "test-web-page-1/test-web-page-3", - "published": 1, - "title": "Test Web Page 3" - }, - { - "doctype": "Web Page", - "main_section": "Test Content 4", - "published": 1, - "title": "Test Web Page 4" - }, - { - "doctype": "Web Page", - "main_section": "Test Content 5", - "route": "test-web-page-1/test-web-page-5", - "published": 1, - "title": "Test Web Page 5" - } -] \ No newline at end of file diff --git a/frappe/website/doctype/web_page/test_records.toml b/frappe/website/doctype/web_page/test_records.toml new file mode 100644 index 0000000000..3ded76f684 --- /dev/null +++ b/frappe/website/doctype/web_page/test_records.toml @@ -0,0 +1,28 @@ +[["Web Page"]] +main_section = "Test Content 1" +published = 1 +title = "Test Web Page 1" + +[["Web Page"]] +main_section = "Test Content 2" +route = "test-web-page-1/test-web-page-2" +published = 1 +title = "Test Web Page 2" + +[["Web Page"]] +main_section = "Test Content 3" +route = "test-web-page-1/test-web-page-3" +published = 1 +title = "Test Web Page 3" + +[["Web Page"]] +main_section = "Test Content 4" +published = 1 +title = "Test Web Page 4" + +[["Web Page"]] +main_section = "Test Content 5" +route = "test-web-page-1/test-web-page-5" +published = 1 +title = "Test Web Page 5" + diff --git a/frappe/website/doctype/website_sidebar/test_website_sidebar.py b/frappe/website/doctype/website_sidebar/test_website_sidebar.py index 14ef65d4d1..911c476dc2 100644 --- a/frappe/website/doctype/website_sidebar/test_website_sidebar.py +++ b/frappe/website/doctype/website_sidebar/test_website_sidebar.py @@ -3,8 +3,6 @@ import frappe from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Website Sidebar') - class UnitTestWebsiteSidebar(UnitTestCase): """ diff --git a/frappe/website/doctype/website_slideshow/test_website_slideshow.py b/frappe/website/doctype/website_slideshow/test_website_slideshow.py index 9eafc875e2..f72e00bb0c 100644 --- a/frappe/website/doctype/website_slideshow/test_website_slideshow.py +++ b/frappe/website/doctype/website_slideshow/test_website_slideshow.py @@ -3,8 +3,6 @@ import frappe from frappe.tests import IntegrationTestCase, UnitTestCase -# test_records = frappe.get_test_records('Website Slideshow') - class UnitTestWebsiteSlideshow(UnitTestCase): """ diff --git a/frappe/workflow/doctype/workflow/test_records.json b/frappe/workflow/doctype/workflow/test_records.json deleted file mode 100644 index fe51488c70..0000000000 --- a/frappe/workflow/doctype/workflow/test_records.json +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/frappe/workflow/doctype/workflow_state/test_records.json b/frappe/workflow/doctype/workflow_state/test_records.json deleted file mode 100644 index 0637a088a0..0000000000 --- a/frappe/workflow/doctype/workflow_state/test_records.json +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/frappe/workflow/doctype/workflow_state/test_workflow_state.py b/frappe/workflow/doctype/workflow_state/test_workflow_state.py index 916e695916..f21c65603d 100644 --- a/frappe/workflow/doctype/workflow_state/test_workflow_state.py +++ b/frappe/workflow/doctype/workflow_state/test_workflow_state.py @@ -2,4 +2,4 @@ # License: MIT. See LICENSE import frappe -test_records = frappe.get_test_records("Workflow State") +test_records = frappe.tests.utils.load_test_records_for("Workflow State")