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