def test_fetch_resource(self): # given: ingest_client = Mock(name='ingest_client') uuid = '301636f7-f97b-4379-bf77-c5dcd9f17bcb' raw_metadata = {'type': 'Biomaterial', 'uuid': {'uuid': uuid}, 'content': {'describedBy': "http://some-schema/1.2.3", 'some': {'content': ['we', 'are', 'agnostic', 'of']}}, 'dcpVersion': '2019-12-02T13:40:50.520Z', 'submissionDate': 'a submission date', 'updateDate': 'an update date' } ingest_client.get_entity_by_callback_link = Mock(return_value=raw_metadata) # and: metadata_service = MetadataService(ingest_client) # when: metadata_resource = metadata_service.fetch_resource( 'hca.domain.com/api/cellsuspensions/301636f7-f97b-4379-bf77-c5dcd9f17bcb') # then: self.assertEqual('biomaterial', metadata_resource.metadata_type) self.assertEqual(uuid, metadata_resource.uuid) self.assertEqual(raw_metadata['content'], metadata_resource.metadata_json) self.assertEqual(utils.to_dcp_version(raw_metadata['dcpVersion']), metadata_resource.dcp_version) self.assertEqual(raw_metadata['submissionDate'], metadata_resource.provenance.submission_date) self.assertEqual(raw_metadata['updateDate'], metadata_resource.provenance.update_date)
def __init__(self, metadata_type, metadata_json, uuid, dcp_version, provenance: MetadataProvenance, full_resource: dict): self.metadata_json = metadata_json self.uuid = uuid self.dcp_version = utils.to_dcp_version(dcp_version) self.metadata_type = metadata_type # TODO: use an enum type instead of string self.provenance = provenance self.full_resource = full_resource
def test_from_dict(self): # given: uuid_value = '3f3212da-d5d0-4e55-b31d-83243fa02e0d' data = self._create_test_data(uuid_value) # when: metadata = MetadataResource.from_dict(data) # then: self.assertIsNotNone(metadata) self.assertEqual('biomaterial', metadata.metadata_type) self.assertEqual(data['content'], metadata.metadata_json) self.assertEqual(utils.to_dcp_version(data['dcpVersion']), metadata.dcp_version) # and: self.assertEqual(uuid_value, metadata.uuid)
def test_to_dcp_version__returns_correct_dcp_format__given_6_decimal_places(self): # given: date_string = '2019-05-23T16:53:40.123456Z' # expect: self.assertEqual(date_string, utils.to_dcp_version(date_string))
def test_to_dcp_version__returns_correct_dcp_format__given_short_date(self): # given: date_string = '2019-05-23T16:53:40Z' # expect: self.assertEqual('2019-05-23T16:53:40.000000Z', utils.to_dcp_version(date_string))