From 46b0734d6f2c0b6eaab754f6755d5510f6fa7b6b Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Tue, 18 Feb 2025 21:24:53 +0530 Subject: [PATCH] fix: tests (cherry picked from commit 019303dd12fb6ff9ec02bb6ad17b35e4e6e76191) # Conflicts: # erpnext/support/doctype/issue/issue.json --- erpnext/support/doctype/issue/issue.json | 42 ++++++++++--------- erpnext/support/doctype/issue/issue.py | 4 +- erpnext/support/doctype/issue/test_issue.py | 38 ++++++++--------- .../patches/rename_sla_fields.py | 4 ++ 4 files changed, 48 insertions(+), 40 deletions(-) diff --git a/erpnext/support/doctype/issue/issue.json b/erpnext/support/doctype/issue/issue.json index 3ff7d02f1ae..c048eb1d5cd 100644 --- a/erpnext/support/doctype/issue/issue.json +++ b/erpnext/support/doctype/issue/issue.json @@ -27,7 +27,7 @@ "reset_service_level_agreement", "cb", "agreement_status", - "resolution_by", + "sla_resolution_by", "service_level_agreement_creation", "on_hold_since", "total_hold_time", @@ -41,7 +41,7 @@ "column_break1", "opening_date", "opening_time", - "resolution_date", + "sla_resolution_date", "resolution_time", "user_resolution_time", "additional_info", @@ -176,13 +176,6 @@ "options": "fa fa-pushpin", "read_only": 1 }, - { - "depends_on": "eval: doc.status != 'Replied' && doc.service_level_agreement;", - "fieldname": "resolution_by", - "fieldtype": "Datetime", - "label": "Resolution By", - "read_only": 1 - }, { "collapsible": 1, "fieldname": "response", @@ -287,16 +280,6 @@ "oldfieldtype": "Time", "read_only": 1 }, - { - "depends_on": "eval:!doc.__islocal", - "fieldname": "resolution_date", - "fieldtype": "Datetime", - "label": "Resolution Date", - "no_copy": 1, - "oldfieldname": "resolution_date", - "oldfieldtype": "Date", - "read_only": 1 - }, { "fieldname": "content_type", "fieldtype": "Data", @@ -386,12 +369,33 @@ "fieldtype": "Duration", "label": "First Response Time", "read_only": 1 + }, + { + "depends_on": "eval: doc.status != 'Replied' && doc.service_level_agreement;", + "fieldname": "sla_resolution_by", + "fieldtype": "Datetime", + "label": "Resolution By", + "read_only": 1 + }, + { + "depends_on": "eval:!doc.__islocal", + "fieldname": "sla_resolution_date", + "fieldtype": "Datetime", + "label": "Resolution Date", + "no_copy": 1, + "oldfieldname": "resolution_date", + "oldfieldtype": "Date", + "read_only": 1 } ], "icon": "fa fa-ticket", "idx": 7, "links": [], +<<<<<<< HEAD "modified": "2021-11-24 13:13:10.276630", +======= + "modified": "2025-02-18 21:18:52.797745", +>>>>>>> 019303dd12 (fix: tests) "modified_by": "Administrator", "module": "Support", "name": "Issue", diff --git a/erpnext/support/doctype/issue/issue.py b/erpnext/support/doctype/issue/issue.py index aeaf28c169c..22630d80f38 100644 --- a/erpnext/support/doctype/issue/issue.py +++ b/erpnext/support/doctype/issue/issue.py @@ -48,13 +48,13 @@ class Issue(Document): priority: DF.Link | None project: DF.Link | None raised_by: DF.Data | None - resolution_by: DF.Datetime | None - resolution_date: DF.Datetime | None resolution_details: DF.TextEditor | None resolution_time: DF.Duration | None response_by: DF.Datetime | None service_level_agreement: DF.Link | None service_level_agreement_creation: DF.Datetime | None + sla_resolution_by: DF.Datetime | None + sla_resolution_date: DF.Datetime | None status: DF.Literal["Open", "Replied", "On Hold", "Resolved", "Closed"] subject: DF.Data total_hold_time: DF.Duration | None diff --git a/erpnext/support/doctype/issue/test_issue.py b/erpnext/support/doctype/issue/test_issue.py index acad115f626..c334a2251b3 100644 --- a/erpnext/support/doctype/issue/test_issue.py +++ b/erpnext/support/doctype/issue/test_issue.py @@ -33,48 +33,48 @@ class TestIssue(TestSetUp): issue = make_issue(creation, "_Test Customer", 1) self.assertEqual(issue.response_by, get_datetime("2019-03-04 14:00")) - self.assertEqual(issue.resolution_by, get_datetime("2019-03-04 15:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2019-03-04 15:00")) # make issue with customer_group specific SLA create_customer("__Test Customer", "_Test SLA Customer Group", "__Test SLA Territory") issue = make_issue(creation, "__Test Customer", 2) self.assertEqual(issue.response_by, get_datetime("2019-03-04 14:00")) - self.assertEqual(issue.resolution_by, get_datetime("2019-03-04 15:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2019-03-04 15:00")) # make issue with territory specific SLA create_customer("___Test Customer", "__Test SLA Customer Group", "_Test SLA Territory") issue = make_issue(creation, "___Test Customer", 3) self.assertEqual(issue.response_by, get_datetime("2019-03-04 14:00")) - self.assertEqual(issue.resolution_by, get_datetime("2019-03-04 15:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2019-03-04 15:00")) # make issue with default SLA issue = make_issue(creation=creation, index=4) self.assertEqual(issue.response_by, get_datetime("2019-03-04 16:00")) - self.assertEqual(issue.resolution_by, get_datetime("2019-03-04 18:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2019-03-04 18:00")) # make issue with default SLA before working hours creation = get_datetime("2019-03-04 7:00") issue = make_issue(creation=creation, index=5) self.assertEqual(issue.response_by, get_datetime("2019-03-04 14:00")) - self.assertEqual(issue.resolution_by, get_datetime("2019-03-04 16:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2019-03-04 16:00")) # make issue with default SLA after working hours creation = get_datetime("2019-03-04 20:00") issue = make_issue(creation, index=6) self.assertEqual(issue.response_by, get_datetime("2019-03-06 14:00")) - self.assertEqual(issue.resolution_by, get_datetime("2019-03-06 16:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2019-03-06 16:00")) # make issue with default SLA next day creation = get_datetime("2019-03-04 14:00") issue = make_issue(creation=creation, index=7) self.assertEqual(issue.response_by, get_datetime("2019-03-04 18:00")) - self.assertEqual(issue.resolution_by, get_datetime("2019-03-06 12:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2019-03-06 12:00")) frappe.flags.current_time = get_datetime("2019-03-04 15:00") issue.reload() @@ -98,7 +98,7 @@ class TestIssue(TestSetUp): issue.save() self.assertEqual(issue.on_hold_since, frappe.flags.current_time) - self.assertFalse(issue.resolution_by) + self.assertFalse(issue.sla_resolution_by) creation = get_datetime("2020-03-04 5:00") frappe.flags.current_time = get_datetime("2020-03-04 5:00") @@ -106,7 +106,7 @@ class TestIssue(TestSetUp): issue.reload() self.assertEqual(flt(issue.total_hold_time, 2), 2700) - self.assertEqual(issue.resolution_by, get_datetime("2020-03-04 16:45")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2020-03-04 16:45")) creation = get_datetime("2020-03-04 5:05") create_communication(issue.name, "test@admin.com", "Sent", creation) @@ -140,8 +140,8 @@ class TestIssue(TestSetUp): issue.status = "Closed" issue.save() - self.assertEqual(issue.resolution_by, get_datetime("2021-11-22 06:00:00")) - self.assertEqual(issue.resolution_date, get_datetime("2021-11-22 01:00:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2021-11-22 06:00:00")) + self.assertEqual(issue.sla_resolution_date, get_datetime("2021-11-22 01:00:00")) self.assertEqual(issue.agreement_status, "Fulfilled") def test_issue_open_after_closed(self): @@ -153,7 +153,7 @@ class TestIssue(TestSetUp): create_communication(issue.name, "test@example.com", "Received", frappe.flags.current_time) self.assertEqual(issue.agreement_status, "First Response Due") self.assertEqual(issue.response_by, get_datetime("2021-11-01 17:00")) - self.assertEqual(issue.resolution_by, get_datetime("2021-11-01 19:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2021-11-01 19:00")) # Replied on → 2 pm frappe.flags.current_time = get_datetime("2021-11-01 14:00") @@ -173,7 +173,7 @@ class TestIssue(TestSetUp): # Hold Time + 1 Hrs self.assertEqual(issue.total_hold_time, 3600) # Resolution By should increase by one hrs - self.assertEqual(issue.resolution_by, get_datetime("2021-11-01 20:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2021-11-01 20:00")) # Replied on → 4 pm, Open → 1 hr, Resolution Due → 8 pm frappe.flags.current_time = get_datetime("2021-11-01 16:00") @@ -190,9 +190,9 @@ class TestIssue(TestSetUp): # Hold Time + 6 Hrs self.assertEqual(issue.total_hold_time, 3600 + 21600) # Resolution By should increase by 6 hrs - self.assertEqual(issue.resolution_by, get_datetime("2021-11-02 02:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2021-11-02 02:00")) self.assertEqual(issue.agreement_status, "Fulfilled") - self.assertEqual(issue.resolution_date, frappe.flags.current_time) + self.assertEqual(issue.sla_resolution_date, frappe.flags.current_time) # Customer Open → 3 am i.e after resolution by is crossed frappe.flags.current_time = get_datetime("2021-11-02 03:00") @@ -201,17 +201,17 @@ class TestIssue(TestSetUp): # Since issue was Resolved, Resolution By should be increased by 5 hrs (3am - 10pm) self.assertEqual(issue.total_hold_time, 3600 + 21600 + 18000) # Resolution By should increase by 5 hrs - self.assertEqual(issue.resolution_by, get_datetime("2021-11-02 07:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2021-11-02 07:00")) self.assertEqual(issue.agreement_status, "Resolution Due") - self.assertFalse(issue.resolution_date) + self.assertFalse(issue.sla_resolution_date) # We Closed → 4 am, SLA should be Fulfilled frappe.flags.current_time = get_datetime("2021-11-02 04:00") issue.status = "Closed" issue.save() - self.assertEqual(issue.resolution_by, get_datetime("2021-11-02 07:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2021-11-02 07:00")) self.assertEqual(issue.agreement_status, "Fulfilled") - self.assertEqual(issue.resolution_date, frappe.flags.current_time) + self.assertEqual(issue.sla_resolution_date, frappe.flags.current_time) def test_recording_of_assignment_on_first_reponse_failure(self): from frappe.desk.form.assign_to import add as add_assignment diff --git a/erpnext/support/doctype/service_level_agreement/patches/rename_sla_fields.py b/erpnext/support/doctype/service_level_agreement/patches/rename_sla_fields.py index 8f3146da345..5e3e92d85c2 100644 --- a/erpnext/support/doctype/service_level_agreement/patches/rename_sla_fields.py +++ b/erpnext/support/doctype/service_level_agreement/patches/rename_sla_fields.py @@ -1,5 +1,6 @@ import frappe from frappe.custom.doctype.custom_field.custom_field import rename_fieldname +from frappe.model.utils.rename_field import rename_field def execute(): @@ -7,3 +8,6 @@ def execute(): for doctype in doctypes: rename_fieldname(doctype + "-resolution_by", "sla_resolution_by") rename_fieldname(doctype + "-resolution_date", "sla_resolution_date") + + rename_field("Issue", "resolution_by", "sla_resolution_by") + rename_field("Issue", "resolution_date", "sla_resolution_date")