From 975e9892b6ece655a25acc4ad07df61bd610ac90 Mon Sep 17 00:00:00 2001
From: Valentin Lorentz <vlorentz@softwareheritage.org>
Date: Fri, 12 Mar 2021 13:57:55 +0100
Subject: [PATCH] model: Add a swhid() method to RawExtrinsicMetadata.

All other hashable objects but ExtId have one.

It will be used by swh-deposit.
---
 swh/model/model.py            | 7 +++++++
 swh/model/tests/test_model.py | 9 +++++++++
 2 files changed, 16 insertions(+)

diff --git a/swh/model/model.py b/swh/model/model.py
index da054718..2030da8c 100644
--- a/swh/model/model.py
+++ b/swh/model/model.py
@@ -1098,6 +1098,13 @@ class RawExtrinsicMetadata(HashableObject, BaseModel):
 
         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
index bf9725c6..3c55b07c 100644
--- a/swh/model/tests/test_model.py
+++ b/swh/model/tests/test_model.py
@@ -21,6 +21,7 @@ from swh.model.identifiers import (
     content_identifier,
     directory_identifier,
     origin_identifier,
+    raw_extrinsic_metadata_identifier,
     release_identifier,
     revision_identifier,
     snapshot_identifier,
@@ -802,6 +803,14 @@ def test_origin_model_id_computation():
     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
-- 
GitLab