Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 
 
 

109 wiersze
2.9 KiB

  1. # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
  2. # MIT License. See license.txt
  3. import frappe, unittest, time
  4. from frappe.model.document import Document
  5. class TestDocument(unittest.TestCase):
  6. def test_load(self):
  7. d = Document("DocType", "User")
  8. self.assertEquals(d.doctype, "DocType")
  9. self.assertEquals(d.name, "User")
  10. self.assertEquals(d.allow_rename, 1)
  11. self.assertTrue(isinstance(d.fields, list))
  12. self.assertTrue(isinstance(d.permissions, list))
  13. self.assertTrue(filter(lambda d: d.fieldname=="email", d.fields))
  14. def test_load_single(self):
  15. d = Document("Website Settings", "Website Settings")
  16. self.assertEquals(d.name, "Website Settings")
  17. self.assertEquals(d.doctype, "Website Settings")
  18. self.assertTrue(d.disable_signup in (0, 1))
  19. def test_insert(self):
  20. d = Document({
  21. "doctype":"Event",
  22. "subject":"_Test Event 1",
  23. "starts_on": "2014-01-01",
  24. "event_type": "Public"
  25. })
  26. d.insert()
  27. self.assertTrue(d.name.startswith("EV"))
  28. self.assertEquals(frappe.db.get_value("Event", d.name, "subject"),
  29. "_Test Event 1")
  30. # test if default values are added
  31. self.assertEquals(d.send_reminder, 1)
  32. return d
  33. def test_insert_with_child(self):
  34. d = Document({
  35. "doctype":"Event",
  36. "subject":"_Test Event 2",
  37. "starts_on": "2014-01-01",
  38. "event_type": "Public",
  39. "event_individuals": [
  40. {
  41. "person": "Administrator"
  42. }
  43. ]
  44. })
  45. d.insert()
  46. self.assertTrue(d.name.startswith("EV"))
  47. self.assertEquals(frappe.db.get_value("Event", d.name, "subject"),
  48. "_Test Event 2")
  49. d1 = Document("Event", d.name)
  50. self.assertTrue(d1.event_individuals[0].person, "Administrator")
  51. def test_update(self):
  52. d = self.test_insert()
  53. d.subject = "subject changed"
  54. d.save()
  55. self.assertEquals(frappe.db.get_value(d.doctype, d.name, "subject"), "subject changed")
  56. def test_mandatory(self):
  57. d = Document({
  58. "doctype": "User",
  59. "email": "test_mandatory@example.com",
  60. })
  61. self.assertRaises(frappe.MandatoryError, d.insert)
  62. d.set("first_name", "Test Mandatory")
  63. d.insert()
  64. self.assertEquals(frappe.db.get_value("User", d.name), d.name)
  65. def test_confict_validation(self):
  66. d1 = self.test_insert()
  67. d2 = Document(d1.doctype, d1.name)
  68. time.sleep(1)
  69. d1.save()
  70. self.assertRaises(frappe.TimestampMismatchError, d2.save)
  71. def test_confict_validation_single(self):
  72. d1 = Document("Website Settings", "Website Settings")
  73. d2 = Document("Website Settings", "Website Settings")
  74. time.sleep(1)
  75. d1.save()
  76. self.assertRaises(frappe.TimestampMismatchError, d2.save)
  77. def test_link_validation(self):
  78. d = Document({
  79. "doctype": "User",
  80. "email": "test_link_validation@example.com",
  81. "first_name": "Link Validation",
  82. "user_roles": [
  83. {
  84. "role": "ABC"
  85. }
  86. ]
  87. })
  88. self.assertRaises(frappe.LinkValidationError, d.insert)
  89. d.user_roles = []
  90. d.set("user_roles", {
  91. "role": "System Manager"
  92. })
  93. d.insert()
  94. self.assertEquals(frappe.db.get_value("User", d.name), d.name)