|
11 | 11 | _add_power_reference_location, |
12 | 12 | _change_shear_coefficient_to_vertical_shear_exponent, |
13 | 13 | _collapse_singleton_dimensions, |
| 14 | + _convert_dcmi_term_to_term_name, |
14 | 15 | _move_available_hub_heights_to_restricted, |
15 | 16 | _rename_dimension_to_axis, |
16 | 17 | ) |
@@ -218,3 +219,62 @@ def test_collapse_singleton_dimensions_no_singletons(generic_120_3_alpha_3): |
218 | 219 | assert mode_after["parameters"][1] == mode_before["parameters"][1] |
219 | 220 | assert mode_after["power"] == mode_before["power"] |
220 | 221 | assert mode_after["thrust_coefficient"] == mode_before["thrust_coefficient"] |
| 222 | + |
| 223 | + |
| 224 | +def test_convert_dcmi_term_to_term_name(generic_120_3_alpha_3): |
| 225 | + """Should convert 'term' property to 'term_name' and lowercase the value""" |
| 226 | + # Verify initial state - fixture has old format |
| 227 | + metadata = generic_120_3_alpha_3["document"]["metadata"] |
| 228 | + assert metadata[0]["term"] == "Identifier" |
| 229 | + assert metadata[1]["term"] == "Format" |
| 230 | + assert metadata[2]["term"] == "Source" |
| 231 | + |
| 232 | + transformed = _convert_dcmi_term_to_term_name(generic_120_3_alpha_3) |
| 233 | + |
| 234 | + metadata = transformed["document"]["metadata"] |
| 235 | + # Check term was renamed to term_name and lowercased |
| 236 | + assert "term" not in metadata[0] |
| 237 | + assert metadata[0]["term_name"] == "identifier" |
| 238 | + assert metadata[0]["value"] == "126b9e41-722f-49ab-9586-b55188adf420" |
| 239 | + |
| 240 | + assert "term" not in metadata[1] |
| 241 | + assert metadata[1]["term_name"] == "format" |
| 242 | + assert metadata[1]["value"] == "IEC61400-16-1" |
| 243 | + |
| 244 | + assert "term" not in metadata[2] |
| 245 | + assert metadata[2]["term_name"] == "source" |
| 246 | + assert metadata[2]["value"] == "Doc 12345 - Rev 01" |
| 247 | + |
| 248 | + |
| 249 | +def test_convert_dcmi_term_to_term_name_no_op_when_already_converted(generic_120_3_alpha_3): |
| 250 | + """Should not modify documents that already use term_name""" |
| 251 | + # Convert to new format first |
| 252 | + generic_120_3_alpha_3["document"]["metadata"] = [ |
| 253 | + {"term_name": "identifier", "value": "test-id"}, |
| 254 | + {"term_name": "format", "value": "IEC61400-16-1"}, |
| 255 | + ] |
| 256 | + |
| 257 | + metadata_before = copy.deepcopy(generic_120_3_alpha_3["document"]["metadata"]) |
| 258 | + transformed = _convert_dcmi_term_to_term_name(generic_120_3_alpha_3) |
| 259 | + metadata_after = transformed["document"]["metadata"] |
| 260 | + |
| 261 | + # Should be unchanged |
| 262 | + assert metadata_after == metadata_before |
| 263 | + |
| 264 | + |
| 265 | +def test_convert_dcmi_term_to_term_name_handles_missing_document(generic_120_3_alpha_3): |
| 266 | + """Should handle documents without a document section gracefully""" |
| 267 | + del generic_120_3_alpha_3["document"] |
| 268 | + |
| 269 | + # Should not raise an error |
| 270 | + transformed = _convert_dcmi_term_to_term_name(generic_120_3_alpha_3) |
| 271 | + assert "document" not in transformed |
| 272 | + |
| 273 | + |
| 274 | +def test_convert_dcmi_term_to_term_name_handles_missing_metadata(generic_120_3_alpha_3): |
| 275 | + """Should handle documents without metadata section gracefully""" |
| 276 | + del generic_120_3_alpha_3["document"]["metadata"] |
| 277 | + |
| 278 | + # Should not raise an error |
| 279 | + transformed = _convert_dcmi_term_to_term_name(generic_120_3_alpha_3) |
| 280 | + assert "metadata" not in transformed["document"] |
0 commit comments