Skip to content
Snippets Groups Projects
Commit fbc499d3 authored by Florian Spreckelsen's avatar Florian Spreckelsen
Browse files

TST: Add integration test for #40

parent 8b675a87
No related branches found
No related tags found
2 merge requests!43REL: Release 0.4.1,!41F fix assure in list
Pipeline #21879 failed
#!/usr/bin/env python
# encoding: utf-8
#
# ** header v3.0
# This file is a part of the CaosDB Project.
#
# Copyright (C) 2022 IndiScale GmbH <info@indiscale.com>
# Copyright (C) 2021 University Medical Center Göttingen, Institute for Medical Informatics
# Copyright (C) 2021 Florian Spreckelsen <florian.spreckelsen@med.uni-goettingen.de>
# Copyright (C) 2021 Florian Spreckelsen <f.spreckelsen@indiscale.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option) any
# later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
# details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
# ** end header
# You should have received a copy of the GNU Affero General Public License along
# with this program. If not, see <https://www.gnu.org/licenses/>.
"""Integration tests for the `assure_...` functions from
`caosadvancedtools.cfood`. They mainly test the in-place updates when
no `to_be_updated` is specified.
......@@ -90,3 +89,29 @@ def test_assure_list_in_place():
assert len(rec2.get_property(ref_rt.name).value) == 3
assert ref_rec2.id in rec2.get_property(ref_rt.name).value
assert ref_rec3.id in rec2.get_property(ref_rt.name).value
def test_add_to_empty_list():
"""See https://gitlab.com/caosdb/caosdb-advanced-user-tools/-/issues/40."""
# @author Florian Spreckelsen
# @date 2022-04-19
referenced_rt = db.RecordType(name="TestReferencedType").insert()
list_prop = db.Property(name="TestListProp",
datatype=db.LIST(referenced_rt)).insert()
referencing_rt = db.RecordType(
name="TestReferencingType").add_property(list_prop).insert()
db.Record(name="TestReferencedRecord").add_parent(referenced_rt).insert()
db.Record(name="TestReferencingRecord").add_parent(
referencing_rt).add_property(list_prop, value=[]).insert()
referenced_rec = db.execute_query("FIND TestReferencedRecord", unique=True)
referencing_rec = db.execute_query(
"FIND TestReferencingRecord", unique=True)
assure_object_is_in_list(referenced_rec, referencing_rec, list_prop.name)
referencing_rec = db.execute_query(
"FIND TestReferencingRecord", unique=True)
assert referencing_rec.get_property(list_prop.name).value == [
referenced_rec.id]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment