seitime-frappe/frappe/tests/test_linked_with.py
2021-11-28 09:44:05 +05:30

115 lines
3.7 KiB
Python

import unittest
import frappe
from frappe.core.doctype.doctype.test_doctype import new_doctype
from frappe.desk.form import linked_with
class TestLinkedWith(unittest.TestCase):
def setUp(self):
parent_doc = new_doctype("Parent Doc")
parent_doc.is_submittable = 1
parent_doc.insert()
child_doc1 = new_doctype("Child Doc1",
fields=[
{
"label": "Parent Doc",
"fieldname": "parent_doc",
"fieldtype": "Link",
"options": "Parent Doc"
},
{
"label": "Reference field",
"fieldname": "reference_name",
"fieldtype": "Dynamic Link",
"options": "reference_doctype"
},
{
"label": "Reference Doctype",
"fieldname": "reference_doctype",
"fieldtype": "Link",
"options": "DocType"
}
], unique=0)
child_doc1.is_submittable = 1
child_doc1.insert()
child_doc2 = new_doctype("Child Doc2",
fields=[
{
"label": "Parent Doc",
"fieldname": "parent_doc",
"fieldtype": "Link",
"options": "Parent Doc"
},
{
"label": "Child Doc1",
"fieldname": "child_doc1",
"fieldtype": "Link",
"options": "Child Doc1"
}
], unique=0)
child_doc2.is_submittable = 1
child_doc2.insert()
def tearDown(self):
for doctype in ['Parent Doc', 'Child Doc1', 'Child Doc2']:
frappe.delete_doc("DocType", doctype)
def test_get_doctype_references_by_link_field(self):
references = linked_with.get_references_across_doctypes_by_link_field(to_doctypes = ['Parent Doc'])
self.assertEqual(len(references['Parent Doc']), 3)
self.assertIn({'doctype': 'Child Doc1', 'fieldname': 'parent_doc'}, references['Parent Doc'])
self.assertIn({'doctype': 'Child Doc2', 'fieldname': 'parent_doc'}, references['Parent Doc'])
references = linked_with.get_references_across_doctypes_by_link_field(to_doctypes = ['Child Doc1'])
self.assertEqual(len(references['Child Doc1']), 2)
self.assertIn({'doctype': 'Child Doc2', 'fieldname': 'child_doc1'}, references['Child Doc1'])
references = linked_with.get_references_across_doctypes_by_link_field(
to_doctypes = ['Child Doc1', 'Parent Doc'], limit_link_doctypes=['Child Doc1'])
self.assertEqual(len(references['Child Doc1']), 1)
self.assertEqual(len(references['Parent Doc']), 1)
self.assertIn({'doctype': 'Child Doc1', 'fieldname': 'parent_doc'}, references['Parent Doc'])
def test_get_doctype_references_by_dlink_field(self):
references = linked_with.get_references_across_doctypes_by_dynamic_link_field(
to_doctypes = ['Parent Doc'], limit_link_doctypes = ['Parent Doc', 'Child Doc1', 'Child Doc2'])
self.assertFalse(references)
parent_record = frappe.get_doc({'doctype': 'Parent Doc'}).insert()
child_record = frappe.get_doc({
'doctype': 'Child Doc1',
'reference_doctype': 'Parent Doc',
'reference_name': parent_record.name
}).insert()
references = linked_with.get_references_across_doctypes_by_dynamic_link_field(
to_doctypes = ['Parent Doc'], limit_link_doctypes = ['Parent Doc', 'Child Doc1', 'Child Doc2'])
self.assertEqual(len(references['Parent Doc']), 1)
self.assertEqual(references['Parent Doc'][0]['doctype'], 'Child Doc1')
self.assertEqual(references['Parent Doc'][0]['doctype_fieldname'], 'reference_doctype')
child_record.delete()
parent_record.delete()
def test_get_submitted_linked_docs(self):
parent_record = frappe.get_doc({'doctype': 'Parent Doc'}).insert()
child_record = frappe.get_doc({
'doctype': 'Child Doc1',
'reference_doctype': 'Parent Doc',
'reference_name': parent_record.name,
'docstatus': 1
}).insert()
linked_docs = linked_with.get_submitted_linked_docs(parent_record.doctype, parent_record.name)["docs"]
self.assertIn(child_record.name,linked_docs[0]['name'])
child_record.cancel()
child_record.delete()
parent_record.delete()