Fixture test: This is broken cause it's trying to find doctype after it has been deleted (wut?) It was working so far because cache wasn't cleared correctly so you'd still find it from cache. db.set_value test: converted to use last query instead of patching SQL
80 lines
2.4 KiB
Python
80 lines
2.4 KiB
Python
import os
|
|
|
|
import frappe
|
|
from frappe.core.doctype.data_import.data_import import export_json, import_doc
|
|
from frappe.desk.form.save import savedocs
|
|
from frappe.model.delete_doc import delete_doc
|
|
from frappe.tests.utils import FrappeTestCase
|
|
|
|
|
|
class TestFixtureImport(FrappeTestCase):
|
|
def create_new_doctype(self, DocType: str) -> None:
|
|
file = frappe.get_app_path("frappe", "custom", "fixtures", f"{DocType}.json")
|
|
|
|
file = open(file)
|
|
doc = file.read()
|
|
file.close()
|
|
|
|
savedocs(doc, "Save")
|
|
|
|
def insert_dummy_data_and_export(self, DocType: str, dummy_name_list: list[str]) -> str:
|
|
for name in dummy_name_list:
|
|
doc = frappe.get_doc({"doctype": DocType, "member_name": name})
|
|
doc.insert()
|
|
|
|
path_to_exported_fixtures = os.path.join(os.getcwd(), f"{DocType}_data.json")
|
|
|
|
export_json(DocType, path_to_exported_fixtures)
|
|
|
|
return path_to_exported_fixtures
|
|
|
|
def test_fixtures_import(self):
|
|
self.assertFalse(frappe.db.exists("DocType", "temp_doctype"))
|
|
|
|
self.create_new_doctype("temp_doctype")
|
|
|
|
dummy_name_list = ["jhon", "jane"]
|
|
path_to_exported_fixtures = self.insert_dummy_data_and_export("temp_doctype", dummy_name_list)
|
|
frappe.db.truncate("temp_doctype")
|
|
|
|
import_doc(path_to_exported_fixtures)
|
|
|
|
delete_doc("DocType", "temp_doctype", delete_permanently=True)
|
|
os.remove(path_to_exported_fixtures)
|
|
|
|
self.assertEqual(frappe.db.count("temp_doctype"), len(dummy_name_list))
|
|
|
|
data = frappe.get_all("temp_doctype", "member_name")
|
|
frappe.db.truncate("temp_doctype")
|
|
|
|
imported_data = set()
|
|
for item in data:
|
|
imported_data.add(item["member_name"])
|
|
|
|
self.assertEqual(set(dummy_name_list), imported_data)
|
|
|
|
def test_singles_fixtures_import(self):
|
|
self.assertFalse(frappe.db.exists("DocType", "temp_singles"))
|
|
|
|
self.create_new_doctype("temp_singles")
|
|
|
|
dummy_name_list = ["Phoebe"]
|
|
path_to_exported_fixtures = self.insert_dummy_data_and_export("temp_singles", dummy_name_list)
|
|
|
|
singles_doctype = frappe.qb.DocType("Singles")
|
|
truncate_query = (
|
|
frappe.qb.from_(singles_doctype).delete().where(singles_doctype.doctype == "temp_singles")
|
|
)
|
|
truncate_query.run()
|
|
|
|
import_doc(path_to_exported_fixtures)
|
|
|
|
data = frappe.db.get_single_value("temp_singles", "member_name")
|
|
truncate_query.run()
|
|
|
|
self.assertEqual(data, dummy_name_list[0])
|
|
|
|
delete_doc("DocType", "temp_singles", delete_permanently=True)
|
|
os.remove(path_to_exported_fixtures)
|
|
|
|
frappe.db.commit()
|