From 1602ed9139d1699ce6cb59f5dbf46d2263a70dd1 Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Tue, 7 May 2024 21:58:01 +0200 Subject: [PATCH] WIP: test for import --- tests/test_file.py | 135 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 129 insertions(+), 6 deletions(-) diff --git a/tests/test_file.py b/tests/test_file.py index 5869af4..35e4a0b 100644 --- a/tests/test_file.py +++ b/tests/test_file.py @@ -421,21 +421,144 @@ def test_import_directoy_recursively(): c.append(directory) c.insert() - assert len(c) == 2 + assert len(c) == 3 # testfolder, testfolder/subfolder, testfolder/subfolder/some_data.csv for e in c: if e.role == "Directory": - assert e.path == "testfolder/subfolder" + assert e.path == "/testfolder/subfolder" or e.path == "/testfolder" else: assert e.role == "File" - assert e.path == "testfolder/subfolder/some_data.csv" + assert e.path == "/testfolder/subfolder/some_data.csv" - re = db.execute_query("FIND Entity WHICH IS STORED AT /testfolder/subfolder*") + re = db.execute_query("FIND Entity WHICH IS STORED AT /testfolder/subfolder**") + assert len(re) == 2 for e in re: if e.role == "Directory": - assert e.path == "testfolder/subfolder" + assert e.path == "/testfolder/subfolder" else: assert e.role == "File" - assert e.path == "testfolder/subfolder/some_data.csv" + assert e.path == "/testfolder/subfolder/some_data.csv" + +def test_import_directoy_recursively_deep(): + path = get_config().get("IntegrationTests", + "test_files.test_import_files_in_dir.local") + if not path.endswith("/"): + path = path[:-1] + folders = ["/testfolder" + folder for folder in [ + "/subfolder1", + "/subfolder1/subsubfolder1.1", + "/subfolder2", + "/subfolder2/subsubfolder2.1", + "/subfolder2/subsubfolder2.2", + "/subfolder2/subsubfolder2.2/subsubsubfolder2.2.1", + "/subfolder3", + "/subfolder3/subsubfolder3.1", + "/subfolder3/subsubfolder3.2", + "/subfolder3/subsubfolder3.2/subsubsubfolder3.2.1", + "/subfolder3/subsubfolder3.2/subsubsubfolder3.2.2", + "/subfolder3/subsubfolder3.2/subsubsubfolder3.2.2/subsubsubsubfolder3.2.2.1", + "/subfolder3/subsubfolder3.3", + "/subfolder3/subsubfolder3.3/subsubsubfolder3.3.1", + "/subfolder3/subsubfolder3.3/subsubsubfolder3.3.2", + "/subfolder3/subsubfolder3.3/subsubsubfolder3.3.2/subsubsubsubfolder3.3.2.1", + "/subfolder3/subsubfolder3.3/subsubsubfolder3.3.3", + "/subfolder3/subsubfolder3.3/subsubsubfolder3.3.3/subsubsubsubfolder3.3.3.1", + "/subfolder3/subsubfolder3.3/subsubsubfolder3.3.3/subsubsubsubfolder3.3.3.2", + "/subfolder3/subsubfolder3.3/subsubsubfolder3.3.3/subsubsubsubfolder3.3.3.2/subsubsubsubsubfolder3.3.3.2.1", + ]] + files = [] + for folder in folders: + os.makedirs(path + folder) + + with open(path + folder + "/some_data1.csv", "w") as test_file1: + test_file1.write(f"1: hello {folder}\n") + files.append(folder + "/some_data1.csv") + with open(path + folder + "/some_data2.csv", "w") as test_file1: + test_file1.write(f"2: hello {folder}\n") + files.append(folder + "/some_data2.csv") + folders.append("/testfolder") + + directory = db.common.models.Directory(recursive_import=True, path="testfolder") + + c = db.Container() + c.append(directory) + c.insert() + + assert len(c) == 20+20+20+1 + assert set(folders + files) == set([e.path for e in c]) + + re = execute_query("FIND ENTITY WHICH IS STORED AT testfolder**") + assert len(re) == 20+20+20+1 + assert set(folders + files) == set([e.path for e in re]) + + +def test_update_import_single_file(): + path = get_config().get("IntegrationTests", + "test_files.test_import_files_in_dir.local") + "testfolder/" + + os.makedirs(path) + os.makedirs(path + "subfolder/") + local_file = os.path.join(path, "subfolder", "some_data.csv") + with open(local_file, "w") as test_file1: + test_file1.write("hello, world\n") + + file_ = db.File(import_file=True, + path="testfolder/subfolder/some_data.csv") + + file_.insert() + version = file_.version + + file_.checksum = None + file_.size = None + re = file_.update(sync=False) + assert re.version == version + assert re.messages[0].description == "Nothing to be updated." + + # update file on the disc + with open(local_file, "w") as test_file1: + test_file1.write("hello, othre worlds\n") + + # do a consistency_check + c = runCheck(None, "testfolder/subfolder/some_data.csv") + assert c.messages["Error", + 0][0] == 'CHANGED:SIZE - DEFAULT:testfolder/subfolder/some_data.csv' + + re = file_.update(sync=False) + assert re.version != version + + # update file on the disc + with open(local_file, "w") as test_file1: + test_file1.write("hello, other worlds\n") + c = runCheck(None, "testfolder/subfolder/some_data.csv") + assert c.messages["Error", + 0][0] == 'CHANGED:HASH - DEFAULT:testfolder/subfolder/some_data.csv' + + re = file_.update(sync=False) + assert re.version != version + + +def test_update_import_directory_new_children(): + path = get_config().get("IntegrationTests", + "test_files.test_import_files_in_dir.local") + "testfolder/" + + os.makedirs(path) + os.makedirs(path + "subfolder/") + with open(path + "subfolder/some_data.csv", "w") as test_file1: + test_file1.write("hello, world\n") + + directory = db.common.models.Directory(recursive_import=True, path="testfolder/subfolder/") + + c = db.Container() + c.append(directory) + c.insert() + + version = directory.version + + with open(path + "subfolder/some_data2.csv", "w") as test_file1: + test_file1.write("hello, world2\n") + + re = directory.update(sync=False) + print(re) + assert re.version != version def test_consistency_file_was_modified_2(): -- GitLab