From 0dfa5a13052f25985c0e40da6a2d112d949b1623 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20tom=20W=C3=B6rden?= <h.tomwoerden@indiscale.com>
Date: Fri, 21 Oct 2022 13:32:13 +0200
Subject: [PATCH] MAINT: make create_flat_list a staticmethod and add failing
 test

---
 src/caoscrawler/crawl.py | 11 +++++------
 unittests/test_tool.py   |  6 ++++++
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/caoscrawler/crawl.py b/src/caoscrawler/crawl.py
index 57b2735c..e8302e65 100644
--- a/src/caoscrawler/crawl.py
+++ b/src/caoscrawler/crawl.py
@@ -500,7 +500,8 @@ class Crawler(object):
                 return True
         return False
 
-    def create_flat_list(self, ent_list: List[db.Entity], flat: List[db.Entity]):
+    @staticmethod
+    def create_flat_list(ent_list: List[db.Entity], flat: List[db.Entity]):
         """
         Recursively adds all properties contained in entities from ent_list to
         the output list flat. Each element will only be added once to the list.
@@ -516,13 +517,11 @@ class Crawler(object):
                         if isinstance(el, db.Entity):
                             if el not in flat:
                                 flat.append(el)
-                            # TODO: move inside if block?
-                            self.create_flat_list([el], flat)
+                            Crawler.create_flat_list([el], flat)
                 elif isinstance(p.value, db.Entity):
                     if p.value not in flat:
                         flat.append(p.value)
-                    # TODO: move inside if block?
-                    self.create_flat_list([p.value], flat)
+                    Crawler.create_flat_list([p.value], flat)
 
     def has_missing_object_in_references(self, record: db.Record):
         """
@@ -696,7 +695,7 @@ class Crawler(object):
         to_be_updated: List[db.Entity] = []
         flat = list(ent_list)
         # assure all entities are direct members TODO Can this be removed at some point?Check only?
-        self.create_flat_list(ent_list, flat)
+        Crawler.create_flat_list(ent_list, flat)
 
         # TODO: can the following be removed at some point
         for ent in flat:
diff --git a/unittests/test_tool.py b/unittests/test_tool.py
index f08f8061..85440fc7 100755
--- a/unittests/test_tool.py
+++ b/unittests/test_tool.py
@@ -713,3 +713,9 @@ def test_security_mode(updateCacheMock, upmock, insmock, ident):
     reset_mocks([updateCacheMock, insmock, upmock])
     # restore original ident
     ident._records = deepcopy(records_backup)
+
+
+def test_create_flat_list():
+    a = db.Record()
+    a.add_property(name="a", value=a)
+    Crawler.create_flat_list([a], [])
-- 
GitLab