def test_duplicate_name_raises(source_doc, source_spec, target_spec): source_doc["list_source_1"]["Stacy"] = {"Name": "Another Stacy"} with pytest.raises(ValueError): source_track: Track = Track.build(source_spec, None, "Source") target_track: Track = Track.build(target_spec, source_track, "Target") translate: Translate = Translate(target_track) translate(source_doc)
def test_list_in_folder(source, target): source_spec, source_doc = source target_spec, expected = target() source_track: Track = Track.build(source_spec, None, "Source") target_track: Track = Track.build(target_spec, source_track, "Target") translate: Translate = Translate(target_track) actual: Dict = translate(source_doc) assert actual == expected
def test_rearrange(source_doc: Dict, source_spec: Dict, target_doc: Dict, target_spec: Dict): """Verify that translate respects the sort order property of the variables in the target spec, and ignores the order in which the variables happen to be defined in the spec. """ shuffled_source_spec = shuffle(source_spec) shuffled_target_spec = shuffle(target_spec) source_track: Track = Track.build(shuffled_source_spec, None, "Source") target_track: Track = Track.build(shuffled_target_spec, source_track, "Target") translate: Translate = Translate(target_track) actual: Dict = translate(source_doc) assert actual == target_doc
def test_named_list_in_list(source, target): """Reversing the order of the sources in the target list spec results in an equivalent change in the order of the resulting list.""" source_spec, source_doc = source target_spec, target_doc = target source_track: Track = Track.build(source_spec, None, "Source") target_track: Track = Track.build(target_spec, source_track, "Target") translate: Translate = Translate(target_track) actual: Dict = translate(source_doc) assert actual == target_doc
def test_translate_with_folders(source: Callable, target: Callable): """Summary: verify that source topology doesn't matter for a given target spec. Long version: Try every combination of the above examples. Because a target variable's source is defined by ID, the particular location of the source variable in the source hierarchy is irrelevant. That is, no matter how the source hierarchy is arranged, a target spec should produce the same target hierarchy as long as all the source variables exist.""" source_doc, source_spec = source() expected, target_spec = target() source_track: Track = Track.build(source_spec, None, "Source") target_track: Track = Track.build(target_spec, source_track, "Target") translate: Translate = Translate(target_track) actual: Dict = translate(source_doc) assert actual == expected
def build(cls, path_locator, schema, target_schema): target_schema = Schema.load(path_locator, target_schema, schema) translate_invariant = Translate(target_schema.invariant) translate_temporal = Translate(target_schema.temporal) return cls(target_schema, translate_invariant, translate_temporal)
def translate(source_spec: Dict, target_spec: Dict) -> Translate: source_track: Track = Track.build(source_spec, None, "Source") target_track: Track = Track.build(target_spec, source_track, "Target") translate: Translate = Translate(target_track) return translate
def do_test(s_doc, s_spec, t_doc, t_spec): source_track: Track = Track.build(s_spec, None, "Source") target_track: Track = Track.build(t_spec, source_track, "Target") translate: Translate = Translate(target_track) actual: Dict = translate(s_doc) assert actual == t_doc
def _do_test(source_spec, source_doc, target_spec, expected): source_track: Track = Track.build(source_spec, None, "Source") target_track: Track = Track.build(target_spec, source_track, "Target") translate: Translate = Translate(target_track) actual: Dict = translate(source_doc) assert actual == expected