| @@ -45,6 +45,7 @@ class MDBase(object): | |||||
| 'modified': datetime.datetime.utcnow | 'modified': datetime.datetime.utcnow | ||||
| } | } | ||||
| _common_properties = [ 'type', 'created_by_ref' ] # XXX - add lang? | _common_properties = [ 'type', 'created_by_ref' ] # XXX - add lang? | ||||
| _common_optional = [ 'overlay_refs' ] | |||||
| _common_names = set(_common_properties + _generated_properties.keys()) | _common_names = set(_common_properties + _generated_properties.keys()) | ||||
| def __init__(self, obj): | def __init__(self, obj): | ||||
| @@ -64,7 +65,7 @@ class MDBase(object): | |||||
| @classmethod | @classmethod | ||||
| def create_obj(cls, obj): | def create_obj(cls, obj): | ||||
| '''Using obj as a base, create an instead of MDBase of the | |||||
| '''Using obj as a base, create an instance of MDBase of the | |||||
| correct type. | correct type. | ||||
| If the correct type is not found, a ValueError is raised.''' | If the correct type is not found, a ValueError is raised.''' | ||||
| @@ -422,6 +423,41 @@ class _TestCases(unittest.TestCase): | |||||
| self.created_by_ref) | self.created_by_ref) | ||||
| self.assertEqual(oldid, files[0].id) | self.assertEqual(oldid, files[0].id) | ||||
| def test_mdbaseoverlay(self): | |||||
| objst = ObjectStore(self.created_by_ref) | |||||
| # that a base object | |||||
| bid = uuid.uuid4() | |||||
| objst.loadobj({ | |||||
| 'type': 'metadata', | |||||
| 'uuid': bid, | |||||
| 'modified': datetime.datetime(2019, 6, 10, 14, 3, 10), | |||||
| 'created_by_ref': self.created_by_ref, | |||||
| 'hashes': [ 'sha256:91751cee0a1ab8414400238a761411daa29643ab4b8243e9a91649e25be53ada' ], | |||||
| 'someprop': [ 'somevalue' ], | |||||
| 'lang': 'en', | |||||
| }) | |||||
| # can have an overlay object | |||||
| oid = uuid.uuid4() | |||||
| dhash = 'sha256:a7c96262c21db9a06fd49e307d694fd95f624569f9b35bb3ffacd880440f9787' | |||||
| objst.loadobj({ | |||||
| 'type': 'metadata', | |||||
| 'uuid': oid, | |||||
| 'modified': datetime.datetime(2019, 6, 10, 18, 3, 10), | |||||
| 'created_by_ref': self.created_by_ref, | |||||
| 'hashes': [ dhash ], | |||||
| 'overlay_refs': [ bid ], | |||||
| 'lang': 'en', | |||||
| }) | |||||
| # and that when you get it's properties | |||||
| oobj = objst.by_id(oid) | |||||
| oitems = oobj.items() | |||||
| # that is has the overlays property | |||||
| print `oitems` | |||||
| def test_objectstore(self): | def test_objectstore(self): | ||||
| objst = ObjectStore.load(os.path.join('fixtures', 'sample.data.pasn1')) | objst = ObjectStore.load(os.path.join('fixtures', 'sample.data.pasn1')) | ||||