Skip to content
Snippets Groups Projects

Draft: Synchronization with existing IDs

Open Alexander Schlemmer requested to merge f-existing-file-id into dev
1 file
+ 34
0
Compare changes
  • Side-by-side
  • Inline
+ 34
0
@@ -28,6 +28,8 @@ from linkahead.cached import cache_clear
from linkahead.utils.register_tests import clear_database, set_test_key
from pytest import fixture, mark, raises
import tempfile
set_test_key("10b128cf8a1372f30aa3697466bb55e76974e0c16a599bb44ace88f19c8f61e2")
@@ -328,3 +330,35 @@ def test_indiscale_87(clear_database):
print(db.apiutils.compare_entities(rec, retrieved))
assert db.apiutils.empty_diff(rec, retrieved)
print("---")
def test_issue_existing_file_id(clear_database):
"""
Issue title: Synchronization with IDs fails
https://gitlab.indiscale.com/caosdb/src/caosdb-crawler/-/issues/174
"""
rt1 = db.RecordType(name="RT1")
rt2 = db.RecordType(name="RT2").insert()
rt1.add_property(rt2, importance=db.OBLIGATORY)
rt1.insert()
r = db.Record()
r.add_parent(rt1)
with tempfile.NamedTemporaryFile() as tmpf:
f = db.File(name="test_parent", path="parent_test/file.txt", file=tmpf.name)
f.insert()
f2 = db.File(name="test_parent", path="parent_test/file.txt", file=tmpf.name)
f2.id = f.id
f2.add_parent(rt2)
r.add_property(name="RT2", value=f2)
ident = CaosDBIdentifiableAdapter()
ident.register_identifiable("RT1", db.RecordType().add_parent(
name="RT1").add_property(name="RT2"))
crawler = Crawler(identifiableAdapter=ident)
crawler.synchronize(crawled_data=[f2, r])
Loading