예제 #1
0
    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)
예제 #2
0
 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
예제 #3
0
    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)
예제 #4
0
    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))
예제 #5
0
    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))