Skip to content
Snippets Groups Projects
Commit 7243a05e authored by Timm Fitschen's avatar Timm Fitschen
Browse files

Merge branch 'f-query-version' into 'dev'

f-query-version -> dev

See merge request caosdb/caosdb-pyinttest!42
parents b21aec34 095ec6ee
No related branches found
No related tags found
No related merge requests found
......@@ -21,6 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
in caosdb server which checks if quoted datetimes in queries are
evaluated correctly.
* Test for [caosdb-server#99](https://gitlab.com/caosdb/caosdb-server/-/issues/99).
* Tests for retrieving older versions.
### Changed (for changes in existing functionality)
......
This diff is collapsed.
......@@ -40,8 +40,11 @@ def test_version_object():
from caosdb.common.versioning import Version
def insertion(name="TestRT"):
rt = c.RecordType(name, description="TestDescription1").insert()
def insertion(name="TestRT", parents=[]):
rt = c.RecordType(name, description="TestDescription1")
for par in parents:
rt.add_parent(par)
rt.insert()
assert rt.version is not None
assert rt.version.id is not None
assert rt.version.date is not None
......@@ -92,8 +95,9 @@ def test_update_description():
def test_update_parent():
par1 = insertion("TestRTParent1")
par2 = insertion("TestRTParent2")
superpar = insertion("TestRTParentSuper")
par1 = insertion("TestRTParent1", parents=[superpar])
par2 = insertion("TestRTParent2", parents=[superpar])
rt = insertion("TestRTChild")
assert len(rt.get_parents()) == 0
......@@ -119,13 +123,16 @@ def test_update_parent():
assert len(c.execute_query("FIND TestRTParent2")) == 2
assert c.execute_query("FIND TestRTChild", unique=True).id == rt.id
rt_head = c.Container().retrieve(query=str(rt.id), sync=False)[0]
rt_head = c.Container().retrieve(
query=str(
rt.id), sync=False, flags={
"cache": "false"})[0]
rt_v1 = c.Container().retrieve(query=str(rt.id) + "@" + first_version.id,
sync=False)[0]
sync=False, flags={"cache": "false"})[0]
rt_v2 = c.Container().retrieve(query=str(rt.id) + "@" + second_version.id,
sync=False)[0]
sync=False, flags={"cache": "false"})[0]
rt_v3 = c.Container().retrieve(query=str(rt.id) + "@" + third_version.id,
sync=False)[0]
sync=False, flags={"cache": "false"})[0]
assert rt_head.version == third_version
assert rt_v1.version.id == first_version.id
......@@ -133,9 +140,11 @@ def test_update_parent():
assert rt_v3.version.id == third_version.id
assert len(rt_v3.get_parents()) == 1
print(rt_v3)
assert rt_v3.get_parent("TestRTParent1") is None
assert rt_v3.get_parent("TestRTParent2") is not None
print(rt_v2)
assert len(rt_v2.get_parents()) == 1
assert rt_v2.get_parent("TestRTParent1") is not None
assert rt_v2.get_parent("TestRTParent2") is None
......@@ -390,6 +399,37 @@ def test_bug_cached_parent_name_in_old_version():
assert old_rec.get_parent(del_rt_name) is None
@mark.xfail(reason="bug fix needed")
def test_bug_parent_name_in_old_version():
""" mysql backend return current name even if this historically not
correct."""
OLD_NAME = "TestRT1_old"
NEW_NAME = "TestRT1_cur"
rt = c.RecordType(name=OLD_NAME).insert()
rec = c.Record(name="TestRec").add_parent(rt)
rec.insert()
rec.description = "v2"
rec.update()
rec_v1 = c.Container().retrieve(str(rec.id) + "@HEAD~1",
sync=False,
flags={"cache": "false"},
raise_exception_on_error=False)[0]
rec_v2 = c.Container().retrieve(str(rec.id) + "@HEAD",
sync=False,
flags={"cache": "false"},
raise_exception_on_error=False)[0]
assert [OLD_NAME] == [p.name for p in rec_v2.get_parents()]
assert [OLD_NAME] == [p.name for p in rec_v1.get_parents()]
# change parent
rt.name = NEW_NAME
assert [NEW_NAME] == [p.name for p in rec_v2.get_parents()]
assert [OLD_NAME] == [p.name for p in rec_v1.get_parents()]
def test_reference_deleted_in_old_version():
ref_rt = insertion("TestReferencedObject")
rt = insertion("TestRT")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment