diff --git a/swh/model/model.py b/swh/model/model.py --- a/swh/model/model.py +++ b/swh/model/model.py @@ -1098,6 +1098,13 @@ return super().from_dict(d) + def swhid(self) -> ExtendedSWHID: + """Returns a SWHID representing this RawExtrinsicMetadata object.""" + return ExtendedSWHID( + object_type=SwhidExtendedObjectType.RAW_EXTRINSIC_METADATA, + object_id=self.id, + ) + @attr.s(frozen=True, slots=True) class ExtID(HashableObject, BaseModel): diff --git a/swh/model/tests/test_model.py b/swh/model/tests/test_model.py --- a/swh/model/tests/test_model.py +++ b/swh/model/tests/test_model.py @@ -21,6 +21,7 @@ content_identifier, directory_identifier, origin_identifier, + raw_extrinsic_metadata_identifier, release_identifier, revision_identifier, snapshot_identifier, @@ -802,6 +803,14 @@ assert str(ori_model.swhid()) == "swh:1:ori:" + ori_id_str +def test_raw_extrinsic_metadata_model_id_computation(): + emd_dict = metadata_example.copy() + + emd_id_str = raw_extrinsic_metadata_identifier(emd_dict) + emd_model = RawExtrinsicMetadata.from_dict(emd_dict) + assert str(emd_model.swhid()) == "swh:1:emd:" + emd_id_str + + @given(strategies.objects(split_content=True)) def test_object_type(objtype_and_obj): obj_type, obj = objtype_and_obj