You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

146 lines
4.2 KiB

  1. # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
  2. # MIT License. See license.txt
  3. from __future__ import unicode_literals
  4. import frappe, unittest
  5. class TestDocument(unittest.TestCase):
  6. def test_get_return_empty_list_for_table_field_if_none(self):
  7. d = frappe.get_doc({"doctype":"User"})
  8. self.assertEquals(d.get("user_roles"), [])
  9. def test_load(self):
  10. d = frappe.get_doc("DocType", "User")
  11. self.assertEquals(d.doctype, "DocType")
  12. self.assertEquals(d.name, "User")
  13. self.assertEquals(d.allow_rename, 1)
  14. self.assertTrue(isinstance(d.fields, list))
  15. self.assertTrue(isinstance(d.permissions, list))
  16. self.assertTrue(filter(lambda d: d.fieldname=="email", d.fields))
  17. def test_load_single(self):
  18. d = frappe.get_doc("Website Settings", "Website Settings")
  19. self.assertEquals(d.name, "Website Settings")
  20. self.assertEquals(d.doctype, "Website Settings")
  21. self.assertTrue(d.disable_signup in (0, 1))
  22. def test_insert(self):
  23. d = frappe.get_doc({
  24. "doctype":"Event",
  25. "subject":"test-doc-test-event 1",
  26. "starts_on": "2014-01-01",
  27. "event_type": "Public"
  28. })
  29. d.insert()
  30. self.assertTrue(d.name.startswith("EV"))
  31. self.assertEquals(frappe.db.get_value("Event", d.name, "subject"),
  32. "test-doc-test-event 1")
  33. # test if default values are added
  34. self.assertEquals(d.send_reminder, 1)
  35. return d
  36. def test_insert_with_child(self):
  37. d = frappe.get_doc({
  38. "doctype":"Event",
  39. "subject":"test-doc-test-event 2",
  40. "starts_on": "2014-01-01",
  41. "event_type": "Public",
  42. "event_individuals": [
  43. {
  44. "person": "Administrator"
  45. }
  46. ]
  47. })
  48. d.insert()
  49. self.assertTrue(d.name.startswith("EV"))
  50. self.assertEquals(frappe.db.get_value("Event", d.name, "subject"),
  51. "test-doc-test-event 2")
  52. d1 = frappe.get_doc("Event", d.name)
  53. self.assertTrue(d1.event_individuals[0].person, "Administrator")
  54. def test_update(self):
  55. d = self.test_insert()
  56. d.subject = "subject changed"
  57. d.save()
  58. self.assertEquals(frappe.db.get_value(d.doctype, d.name, "subject"), "subject changed")
  59. def test_mandatory(self):
  60. frappe.delete_doc_if_exists("User", "test_mandatory@example.com")
  61. d = frappe.get_doc({
  62. "doctype": "User",
  63. "email": "test_mandatory@example.com",
  64. })
  65. self.assertRaises(frappe.MandatoryError, d.insert)
  66. d.set("first_name", "Test Mandatory")
  67. d.insert()
  68. self.assertEquals(frappe.db.get_value("User", d.name), d.name)
  69. def test_confict_validation(self):
  70. d1 = self.test_insert()
  71. d2 = frappe.get_doc(d1.doctype, d1.name)
  72. d1.save()
  73. self.assertRaises(frappe.TimestampMismatchError, d2.save)
  74. def test_confict_validation_single(self):
  75. d1 = frappe.get_doc("Website Settings", "Website Settings")
  76. d2 = frappe.get_doc("Website Settings", "Website Settings")
  77. d1.save()
  78. self.assertRaises(frappe.TimestampMismatchError, d2.save)
  79. def test_permission(self):
  80. frappe.set_user("Guest")
  81. d = self.assertRaises(frappe.PermissionError, self.test_insert)
  82. frappe.set_user("Administrator")
  83. def test_permission_single(self):
  84. frappe.set_user("Guest")
  85. d = frappe.get_doc("Website Settings", "Website Settigns")
  86. self.assertRaises(frappe.PermissionError, d.save)
  87. frappe.set_user("Administrator")
  88. def test_link_validation(self):
  89. frappe.delete_doc_if_exists("User", "test_link_validation@example.com")
  90. d = frappe.get_doc({
  91. "doctype": "User",
  92. "email": "test_link_validation@example.com",
  93. "first_name": "Link Validation",
  94. "user_roles": [
  95. {
  96. "role": "ABC"
  97. }
  98. ]
  99. })
  100. self.assertRaises(frappe.LinkValidationError, d.insert)
  101. d.user_roles = []
  102. d.append("user_roles", {
  103. "role": "System Manager"
  104. })
  105. d.insert()
  106. self.assertEquals(frappe.db.get_value("User", d.name), d.name)
  107. def test_validate(self):
  108. d = self.test_insert()
  109. d.starts_on = "2014-01-01"
  110. d.ends_on = "2013-01-01"
  111. self.assertRaises(frappe.ValidationError, d.validate)
  112. self.assertRaises(frappe.ValidationError, d.run_method, "validate")
  113. self.assertRaises(frappe.ValidationError, d.save)
  114. def test_update_after_submit(self):
  115. d = self.test_insert()
  116. d.starts_on = "2014-09-09"
  117. self.assertRaises(frappe.UpdateAfterSubmitError, d.validate_update_after_submit)
  118. d.meta.get_field("starts_on").allow_on_submit = 1
  119. d.validate_update_after_submit()
  120. d.meta.get_field("starts_on").allow_on_submit = 0