diff --git a/cds_migrator_kit/rdm/records/transform/xml_processing/rules/base.py b/cds_migrator_kit/rdm/records/transform/xml_processing/rules/base.py index 9a743263..cc079f98 100644 --- a/cds_migrator_kit/rdm/records/transform/xml_processing/rules/base.py +++ b/cds_migrator_kit/rdm/records/transform/xml_processing/rules/base.py @@ -570,8 +570,9 @@ def title(self, key, value): title = StringValue(value.get("a")) subtitle = StringValue(value.get("b", "")).parse() title.required() + title_string = title.parse() + alt_titles = self.get("additional_titles", []) if subtitle: - alt_titles = self.get("additional_titles", []) alt_titles.append( { "title": subtitle, @@ -579,7 +580,18 @@ def title(self, key, value): } ) self["additional_titles"] = alt_titles - return title.parse() + if self.get("title") and title_string: + alt_titles.append( + { + "title": title_string, + "type": {"id": "subtitle"}, + } + ) + self["additional_titles"] = alt_titles + raise IgnoreKey("title") + if title_string: + return title_string + raise IgnoreKey("title") @model.over("rights", "^540__") diff --git a/cds_migrator_kit/rdm/records/transform/xml_processing/rules/hr.py b/cds_migrator_kit/rdm/records/transform/xml_processing/rules/hr.py index fe02cd72..108a8c61 100644 --- a/cds_migrator_kit/rdm/records/transform/xml_processing/rules/hr.py +++ b/cds_migrator_kit/rdm/records/transform/xml_processing/rules/hr.py @@ -365,11 +365,7 @@ def title(self, key, value): self["additional_titles"] = alt_titles identifiers = self.get("identifiers", []) rep_num = next( - ( - identifier - for identifier in identifiers - if identifier["scheme"] == "cdsrn" - ), + (identifier for identifier in identifiers if identifier["scheme"] == "cdsrn"), {}, ).get("identifier") @@ -393,7 +389,6 @@ def title(self, key, value): return title - @model.over("meeting_cf", "^773__") @for_each_value def meeting(self, key, value): diff --git a/tests/cds-rdm/test_base_migration.py b/tests/cds-rdm/test_base_migration.py index 4aff7228..2bd59012 100644 --- a/tests/cds-rdm/test_base_migration.py +++ b/tests/cds-rdm/test_base_migration.py @@ -47,15 +47,14 @@ def test_title_with_subtitle(self): def test_title_missing_field_returns_empty(self): """Test that missing title returns empty string.""" record = {} - result = title(record, "245__", {}) - # StringValue with empty value returns empty string - assert result == "" + with pytest.raises(IgnoreKey): + title(record, "245__", {}) def test_title_empty_string_returns_empty(self): """Test that empty title returns empty string.""" record = {} - result = title(record, "245__", {"a": ""}) - assert result == "" + with pytest.raises(IgnoreKey): + title(record, "245__", {"a": ""}) def test_title_subtitle_appends_to_existing(self): """Test subtitle appends to existing additional_titles."""