From 7153ab8cf819f8a7a07a14ee37741dfe22501803 Mon Sep 17 00:00:00 2001
From: Alexander Schlemmer <alexander@mail-schlemmer.de>
Date: Thu, 27 Jan 2022 13:37:21 +0100
Subject: [PATCH] TST: fixed broken crawler unit test

---
 src/newcrawler/crawl.py         |  2 +-
 unittests/test_tool.py          | 25 ++++++++++++++++---------
 unittests/test_tool_extended.py |  2 --
 3 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/src/newcrawler/crawl.py b/src/newcrawler/crawl.py
index 1c1b4c16..141558f3 100644
--- a/src/newcrawler/crawl.py
+++ b/src/newcrawler/crawl.py
@@ -590,7 +590,7 @@ class Crawler(object):
                     # in the converter object
                     # -> rather store it in the variable storage than in the converter?
                     converter.create_values(generalStore_copy, element)
-                    
+
                     # Create an entry for this matched structure element:
                     generalStore_copy[converter.name] = (
                         os.path.join(*(structure_elements_path + [element.get_name()])))
diff --git a/unittests/test_tool.py b/unittests/test_tool.py
index 1b4798f2..b49f9683 100755
--- a/unittests/test_tool.py
+++ b/unittests/test_tool.py
@@ -69,19 +69,21 @@ def ident(crawler):
         .add_property(name="identifier"))
     return ident
 
-# This one currently fails, because additional variables are created
-# in the general store that have to be taken into account in assertions:
-@pytest.mark.xfail
+
 def test_record_structure_generation(crawler):
     subd = crawler.debug_tree[dircheckstr("DataAnalysis")]
     subc = crawler.debug_metadata["copied"][dircheckstr("DataAnalysis")]
     assert len(subd) == 2
-    assert len(subd[0]) == 0
-    assert len(subd[1]) == 0
+    assert len(subd[0]) == 1  # variables store on Data Analysis node of debug tree
+    assert len(subd[1]) == 0  # record store on Data Analysis node of debug tree
     assert len(subc) == 2
-    assert len(subc[0]) == 0
+    assert len(subc[0]) == 1
     assert len(subc[1]) == 0
 
+    # The data analysis node creates one variable for the node itself:
+    assert subd[0]["DataAnalysis"] == "DataAnalysis"
+    assert subc[0]["DataAnalysis"] == False
+
     subd = crawler.debug_tree[dircheckstr("DataAnalysis", "2020_climate-model-predict")]
     subc = crawler.debug_metadata["copied"][dircheckstr(
         "DataAnalysis", "2020_climate-model-predict")]
@@ -92,13 +94,18 @@ def test_record_structure_generation(crawler):
     assert subd[1]["Project"].get_property("date").value == "2020"
     assert subd[1]["Project"].get_property("identifier").value == "climate-model-predict"
 
-    assert len(subd[0]) == 3
+    assert len(subd[0]) == 5
     assert subd[0]["date"] == "2020"
     assert subd[0]["identifier"] == "climate-model-predict"
     assert subd[0]["Project"].__class__ == db.Record
 
+    assert subd[0]["DataAnalysis"] == "DataAnalysis"
+    assert subc[0]["DataAnalysis"] == True
+    assert subd[0]["project_dir"] == "DataAnalysis/2020_climate-model-predict"
+    assert subc[0]["project_dir"] == False
+
     # Check the copy flags for the first level in the hierarchy:
-    assert len(subc[0]) == 3
+    assert len(subc[0]) == 5
     assert len(subc[1]) == 1
     assert subc[1]["Project"] is False
     assert subc[0]["Project"] is False
@@ -111,7 +118,7 @@ def test_record_structure_generation(crawler):
     subc = crawler.debug_metadata["copied"][dircheckstr("DataAnalysis",
                                                         "2020_climate-model-predict",
                                                         "2020-02-08_prediction-errors")]
-    assert len(subd[0]) == 4
+    assert len(subd[0]) == 7
     assert subd[0]["date"] == "2020-02-08"
     assert subd[0]["identifier"] == "prediction-errors"
     assert subd[0]["Project"].__class__ == db.Record
diff --git a/unittests/test_tool_extended.py b/unittests/test_tool_extended.py
index 6abe8925..891c0c61 100644
--- a/unittests/test_tool_extended.py
+++ b/unittests/test_tool_extended.py
@@ -72,8 +72,6 @@ def crawler():
 
 
 def test_file_structure_generation(crawler):
-    subd = crawler.debug_tree[dircheckstr("DataAnalysis")]
-    subc = crawler.debug_metadata["copied"][dircheckstr("DataAnalysis")]
     sd = crawler.debug_tree[dircheckstr("SimulationData",
                                         "2020_climate-model-predict", "2020-02-01",
                                         "README.md", structure_element_type="File")]
-- 
GitLab