diff --git a/CHANGELOG.md b/CHANGELOG.md index 3be1b6deafa12875ce74dcc6e711d96ee85e0482..624c2b293044ddb4cc9208a807367681d6d24b1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -130,6 +130,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * `TableImporter.check_missing` in case of array-valued fields in table * YAML model parser has better description handling. +* YAML model parser shows "LinkAhead" and "the yaml file" in its comparison display + instead of "old" and "new". ### Documentation ### diff --git a/src/caosadvancedtools/models/data_model.py b/src/caosadvancedtools/models/data_model.py index bd3888b812549fe37f78f31d699e31ad88485291..3be5600239d97689604a64492896e3083d5acd72 100644 --- a/src/caosadvancedtools/models/data_model.py +++ b/src/caosadvancedtools/models/data_model.py @@ -146,7 +146,9 @@ class DataModel(dict): 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)) + name=ent.name, + label_e0="version from the yaml file", + label_e1="version from LinkAhead")) if diff != "": if verbose: diff --git a/unittests/test_yaml_model_parser.py b/unittests/test_yaml_model_parser.py index c578cc333cd9122e9f9399507a5e98aaed8440e7..9ca92a1d696d691d1e4b8eccbd85655ec1488a3b 100644 --- a/unittests/test_yaml_model_parser.py +++ b/unittests/test_yaml_model_parser.py @@ -21,8 +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, @@ -644,6 +647,46 @@ RT2: }""" +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 + + def test_setting_values(): model = parse_model_from_string(""" parameter: