snapshot of https://github.com/frappe/crm.git (develop, 2026-09-18; blobs > 131072B omitted)
Some checks failed
Frontend / Unit Tests & Coverage (push) Has been skipped
Regenerate POT file (translatable strings) / Regenerate POT file (develop) (push) Failing after 1m13s
Regenerate POT file (translatable strings) / Regenerate POT file (main-hotfix) (push) Failing after 6s
Server / Tests (frappe ${{ matrix.frappe-branch }}) (push) Has been skipped
Server / Resolve frappe matrix (push) Failing after 1s
Frontend / Lint (push) Failing after 1s
Frontend / Production Build (push) Failing after 1s
Server / Coverage Wrap Up (push) Has been skipped
Frontend / Coverage Wrap Up (push) Has been skipped
Some checks failed
Frontend / Unit Tests & Coverage (push) Has been skipped
Regenerate POT file (translatable strings) / Regenerate POT file (develop) (push) Failing after 1m13s
Regenerate POT file (translatable strings) / Regenerate POT file (main-hotfix) (push) Failing after 6s
Server / Tests (frappe ${{ matrix.frappe-branch }}) (push) Has been skipped
Server / Resolve frappe matrix (push) Failing after 1s
Frontend / Lint (push) Failing after 1s
Frontend / Production Build (push) Failing after 1s
Server / Coverage Wrap Up (push) Has been skipped
Frontend / Coverage Wrap Up (push) Has been skipped
This commit is contained in:
59
crm/tests/test_notification_log.py
Normal file
59
crm/tests/test_notification_log.py
Normal file
@@ -0,0 +1,59 @@
|
||||
from unittest.mock import patch
|
||||
|
||||
import frappe
|
||||
from frappe.tests import IntegrationTestCase
|
||||
|
||||
from crm.extends.notification_log import before_insert, get_crm_route
|
||||
|
||||
|
||||
class TestNotificationLogLink(IntegrationTestCase):
|
||||
def test_get_crm_route_lead(self):
|
||||
self.assertEqual(get_crm_route("CRM Lead", "CRM-LEAD-0001"), "/crm/leads/CRM-LEAD-0001")
|
||||
|
||||
def test_get_crm_route_deal(self):
|
||||
self.assertEqual(get_crm_route("CRM Deal", "CRM-DEAL-0001"), "/crm/deals/CRM-DEAL-0001")
|
||||
|
||||
def test_get_crm_route_non_crm_doctype(self):
|
||||
"""Non-CRM documents get no CRM route (email keeps the Desk fallback)."""
|
||||
self.assertIsNone(get_crm_route("ToDo", "abc123"))
|
||||
|
||||
def test_get_crm_route_missing_name(self):
|
||||
self.assertIsNone(get_crm_route("CRM Lead", None))
|
||||
|
||||
def test_get_crm_route_task_links_to_parent(self):
|
||||
"""Tasks have no standalone page; link to the parent Lead/Deal Tasks tab."""
|
||||
parent = frappe._dict(reference_doctype="CRM Deal", reference_docname="CRM-DEAL-0009")
|
||||
with patch("frappe.db.get_value", return_value=parent):
|
||||
self.assertEqual(get_crm_route("CRM Task", "task-1"), "/crm/deals/CRM-DEAL-0009#tasks")
|
||||
|
||||
def test_get_crm_route_task_without_parent(self):
|
||||
with patch("frappe.db.get_value", return_value=None):
|
||||
self.assertIsNone(get_crm_route("CRM Task", "task-orphan"))
|
||||
|
||||
def test_before_insert_sets_crm_link(self):
|
||||
doc = frappe._dict(link=None, document_type="CRM Lead", document_name="CRM-LEAD-0002")
|
||||
before_insert(doc)
|
||||
self.assertEqual(doc.link, frappe.utils.get_url("/crm/leads/CRM-LEAD-0002"))
|
||||
|
||||
def test_before_insert_preserves_existing_link(self):
|
||||
doc = frappe._dict(link="/custom/link", document_type="CRM Lead", document_name="CRM-LEAD-0003")
|
||||
before_insert(doc)
|
||||
self.assertEqual(doc.link, "/custom/link")
|
||||
|
||||
def test_before_insert_ignores_non_crm_doc(self):
|
||||
doc = frappe._dict(link=None, document_type="ToDo", document_name="abc")
|
||||
before_insert(doc)
|
||||
self.assertIsNone(doc.link)
|
||||
|
||||
def test_before_insert_is_type_agnostic(self):
|
||||
"""Covers assign AND unassign: both emit type='Assignment' logs, but the link is
|
||||
set purely from the CRM document_type, so any notification type is handled."""
|
||||
for notification_type in ("Assignment", "Share", "Default", None):
|
||||
doc = frappe._dict(
|
||||
link=None,
|
||||
type=notification_type,
|
||||
document_type="CRM Deal",
|
||||
document_name="CRM-DEAL-0004",
|
||||
)
|
||||
before_insert(doc)
|
||||
self.assertEqual(doc.link, frappe.utils.get_url("/crm/deals/CRM-DEAL-0004"))
|
||||
Reference in New Issue
Block a user