Code owners
Assign users and groups as approvers for specific file changes. Learn more.
test_issues.py 2.28 KiB
#!/usr/bin/env python3
# encoding: utf-8
#
# This file is a part of the CaosDB Project.
#
# Copyright (C) 2022 IndiScale GmbH <info@indiscale.com>
# Copyright (C) 2022 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 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/>.
#
from pytest import mark
from caoscrawler.crawl import Crawler
from caoscrawler.structure_elements import Dict
from test_tool import rfp
@mark.xfail(
reason="Wait until value conversion in dicts is fixed, see "
"https://gitlab.com/caosdb/caosdb-crawler/-/issues/10."
)
def test_issue_10():
"""Test integer-to-float conversion in dictionaries"""
crawler_definition = {
"DictTest": {
"type": "Dict",
"match": "(.*)",
"records": {
"TestRec": {}
},
"subtree": {
"float_element": {
"type": "DictFloatElement",
"match_name": "float_value",
"match_value": "(?P<float_value>.*)",
"records": {
"TestRec": {
"float_prop": "$float_value"
}
}
}
}
}
}
crawler = Crawler(debug=True)
converter_registry = crawler.load_converters(crawler_definition)
test_dict = {
"float_value": 4
}
records = crawler.start_crawling(
Dict("TestDict", test_dict), crawler_definition, converter_registry)
assert len(records) == 1
assert records[0].parents[0].name == "TestRec"
assert records[0].get_property("float_prop") is not None
assert float(records[0].get_property("float_prop").value) == 4.0