From 75849ca6af859d4aed721c4a080cdbdfef06b1a3 Mon Sep 17 00:00:00 2001 From: florian <f.spreckelsen@inidscale.com> Date: Tue, 27 Sep 2022 10:37:09 +0200 Subject: [PATCH] TST: Add tests for #10 --- unittests/test_issues.py | 70 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 unittests/test_issues.py diff --git a/unittests/test_issues.py b/unittests/test_issues.py new file mode 100644 index 00000000..6e77b0c7 --- /dev/null +++ b/unittests/test_issues.py @@ -0,0 +1,70 @@ +#!/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 -- GitLab