From f8b92cdd80b07b1af33a396dd4697b2c41970ec9 Mon Sep 17 00:00:00 2001
From: Alexander Schlemmer <a.schlemmer@indiscale.com>
Date: Fri, 25 Oct 2024 11:31:09 +0200
Subject: [PATCH] fix(yaml-models): corrected output labels for the yaml model
 parser

---
 src/caosadvancedtools/models/data_model.py |  6 ++-
 unittests/test_yaml_model_parser.py        | 44 ++++++++++++++++++++++
 2 files changed, 48 insertions(+), 2 deletions(-)

diff --git a/src/caosadvancedtools/models/data_model.py b/src/caosadvancedtools/models/data_model.py
index 26641489..bda8cad6 100644
--- a/src/caosadvancedtools/models/data_model.py
+++ b/src/caosadvancedtools/models/data_model.py
@@ -145,8 +145,10 @@ class DataModel(dict):
                 else:
                     query = db.Query(f"FIND ENTITY with id={ent.id}")
                     ref = query.execute(unique=True)
-                diff = (describe_diff(*compare_entities(ent, ref
-                                                        ), name=ent.name))
+                diff = (describe_diff(*compare_entities(ent, ref),
+                                      name=ent.name,
+                                      label_old="version from the yaml file",
+                                      label_new="version from LinkAhead"))
 
                 if diff != "":
                     if verbose:
diff --git a/unittests/test_yaml_model_parser.py b/unittests/test_yaml_model_parser.py
index d6dbf718..5b3116fc 100644
--- a/unittests/test_yaml_model_parser.py
+++ b/unittests/test_yaml_model_parser.py
@@ -21,7 +21,11 @@ from datetime import date
 from tempfile import NamedTemporaryFile
 from pytest import raises, mark
 
+from unittest.mock import Mock
+
 import linkahead as db
+
+import caosadvancedtools
 from caosadvancedtools.models.parser import (TwiceDefinedException,
                                              YamlDefinitionError,
                                              parse_model_from_string,
@@ -641,3 +645,43 @@ RT2:
 </RecordType>
 , 'bar': <RecordType name="bar"/>
 }"""
+
+
+def test_sync_output(capfd):
+    model = parse_model_from_string("""
+RT:
+  obligatory_properties:
+    identifier:
+      datatype: TEXT
+""")
+
+    existing_entities = [db.RecordType(name="RT", id=25).add_property(name="identifier",
+                                                                      datatype="INTEGER",
+                                                                      importance="OBLIGATORY",
+                                                                      id=24),
+                         db.Property(name="identifier", datatype="INTEGER", id=24)]
+
+    def get_existing_entities(ent_cont):
+        return existing_entities
+
+    class MockQuery:
+        def __init__(self, q):
+            self.q = q
+
+        def execute(self, unique=True):
+            id = int(self.q.split("=")[1])
+            for existing_ent in existing_entities:
+                if existing_ent.id == id:
+                    return existing_ent
+            return None
+
+    model.get_existing_entities = get_existing_entities
+    caosadvancedtools.models.parser.db.Query = MockQuery
+    caosadvancedtools.models.parser.db.Container.update = Mock()
+
+    model.sync_data_model(True, True)
+    assert caosadvancedtools.models.parser.db.Container.update.called
+    output, err = capfd.readouterr()
+    print(output)
+    assert "version from the yaml file: TEXT" in output
+    assert "version from LinkAhead: INTEGER" in output
-- 
GitLab