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.
 
 
 
 
 
 

88 regels
3.6 KiB

  1. # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
  2. # MIT License. See license.txt
  3. from __future__ import unicode_literals
  4. import frappe, unittest
  5. from frappe.core.page.data_import_tool import exporter
  6. from frappe.core.page.data_import_tool import importer
  7. from frappe.utils.csvutils import read_csv_content
  8. class TestDataImport(unittest.TestCase):
  9. def test_export(self):
  10. exporter.get_template("User", all_doctypes="No", with_data="No")
  11. content = read_csv_content(frappe.response.result)
  12. self.assertTrue(content[1][1], "User")
  13. def test_export_with_data(self):
  14. exporter.get_template("User", all_doctypes="No", with_data="Yes")
  15. content = read_csv_content(frappe.response.result)
  16. self.assertTrue(content[1][1], "User")
  17. self.assertTrue("Administrator" in [c[1] for c in content if len(c)>1])
  18. def test_export_with_all_doctypes(self):
  19. exporter.get_template("User", all_doctypes="Yes", with_data="Yes")
  20. content = read_csv_content(frappe.response.result)
  21. self.assertTrue(content[1][1], "User")
  22. self.assertTrue('"Administrator"' in [c[1] for c in content if len(c)>1])
  23. self.assertEquals(content[13][0], "DocType:")
  24. self.assertEquals(content[13][1], "User")
  25. self.assertTrue("UserRole" in content[13])
  26. def test_import(self):
  27. if frappe.db.exists("Blog Category", "test-category"):
  28. frappe.delete_doc("Blog Category", "test-category")
  29. exporter.get_template("Blog Category", all_doctypes="No", with_data="No")
  30. content = read_csv_content(frappe.response.result)
  31. content.append(["", "", "test-category", "Test Cateogry"])
  32. importer.upload._f(content)
  33. self.assertTrue(frappe.db.get_value("Blog Category", "test-category", "title"), "Test Category")
  34. # export with data
  35. exporter.get_template("Blog Category", all_doctypes="No", with_data="Yes")
  36. content = read_csv_content(frappe.response.result)
  37. # overwrite
  38. content[-1][3] = "New Title"
  39. importer.upload._f(content, overwrite=True)
  40. self.assertTrue(frappe.db.get_value("Blog Category", "test-category", "title"), "New Title")
  41. def test_import_only_children(self):
  42. user_email = "test_import_userrole@example.com"
  43. if frappe.db.exists("User", user_email):
  44. frappe.delete_doc("User", user_email)
  45. frappe.get_doc({"doctype": "User", "email": user_email, "first_name": "Test Import UserRole"}).insert()
  46. exporter.get_template("UserRole", "User", all_doctypes="No", with_data="No")
  47. content = read_csv_content(frappe.response.result)
  48. content.append(["", "test_import_userrole@example.com", "Blogger"])
  49. importer.upload._f(content)
  50. user = frappe.get_doc("User", user_email)
  51. self.assertEquals(len(user.get("user_roles")), 1)
  52. self.assertTrue(user.get("user_roles")[0].role, "Blogger")
  53. # overwrite
  54. exporter.get_template("UserRole", "User", all_doctypes="No", with_data="No")
  55. content = read_csv_content(frappe.response.result)
  56. content.append(["", "test_import_userrole@example.com", "Website Manager"])
  57. importer.upload._f(content, overwrite=True)
  58. user = frappe.get_doc("User", user_email)
  59. self.assertEquals(len(user.get("user_roles")), 1)
  60. self.assertTrue(user.get("user_roles")[0].role, "Website Manager")
  61. def test_import_with_children(self):
  62. exporter.get_template("Event", all_doctypes="Yes", with_data="No")
  63. content = read_csv_content(frappe.response.result)
  64. content.append([None] * len(content[-2]))
  65. content[-1][2] = "__Test Event"
  66. content[-1][3] = "Private"
  67. content[-1][4] = "2014-01-01 10:00:00.000000"
  68. content[-1][content[15].index("role")] = "System Manager"
  69. importer.upload._f(content)
  70. ev = frappe.get_doc("Event", {"subject":"__Test Event"})
  71. self.assertTrue("System Manager" in [d.role for d in ev.roles])