def __map_datacatalog_relationships(cls, assembled_entries_dict):
        all_assembled_entries = []
        for assembled_entries_data in assembled_entries_dict.values():
            all_assembled_entries.extend(assembled_entries_data)

        prepare.EntryRelationshipMapper().fulfill_tag_fields(
            all_assembled_entries)
    def test_fulfill_tag_fields_should_resolve_app_custom_prop_def_mapping(
            self):

        definition_id = 'test_definition'
        definition_entry = self.__make_fake_entry(
            definition_id, 'custom_property_definition')
        definition_tag = self.__make_fake_tag(
            string_fields=(('id', definition_id), ))

        app_id = 'test_app'
        app_entry = self.__make_fake_entry(app_id, 'app')
        string_fields = ('id', app_id), ('property_definition_id',
                                         definition_id)
        app_tag = self.__make_fake_tag(string_fields=string_fields)

        definition_assembled_entry = commons_prepare.AssembledEntryData(
            definition_id, definition_entry, [definition_tag])
        app_assembled_entry = commons_prepare.AssembledEntryData(
            app_id, app_entry, [app_tag])

        prepare.EntryRelationshipMapper().fulfill_tag_fields(
            [definition_assembled_entry, app_assembled_entry])

        self.assertEqual(
            'https://console.cloud.google.com/datacatalog/'
            'fake_entries/test_definition',
            app_tag.fields['property_definition_entry'].string_value)
    def test_fulfill_tag_fields_should_resolve_app_stream_mapping(self):
        stream_id = 'test_stream'
        stream_entry = self.__make_fake_entry(stream_id, 'stream')
        stream_tag = self.__make_fake_tag(string_fields=(('id', stream_id), ))

        app_id = 'test_app'
        app_entry = self.__make_fake_entry(app_id, 'app')
        string_fields = ('id', app_id), ('stream_id', stream_id)
        app_tag = self.__make_fake_tag(string_fields=string_fields)

        stream_assembled_entry = commons_prepare.AssembledEntryData(
            stream_id, stream_entry, [stream_tag])
        app_assembled_entry = commons_prepare.AssembledEntryData(
            app_id, app_entry, [app_tag])

        prepare.EntryRelationshipMapper().fulfill_tag_fields(
            [stream_assembled_entry, app_assembled_entry])

        self.assertEqual(
            'https://console.cloud.google.com/datacatalog/'
            'fake_entries/test_stream',
            app_tag.fields['stream_entry'].string_value)
    def test_fulfill_tag_fields_should_resolve_measure_app_mapping(self):
        app_id = 'test_app'
        app_entry = self.__make_fake_entry(app_id, 'app')
        app_tag = self.__make_fake_tag(string_fields=(('id', app_id), ))

        measure_id = 'test_measure'
        measure_entry = self.__make_fake_entry(measure_id, 'measure')
        string_fields = ('id', measure_id), ('app_id', app_id)
        measure_tag = self.__make_fake_tag(string_fields=string_fields)

        app_assembled_entry = commons_prepare.AssembledEntryData(
            app_id, app_entry, [app_tag])
        measure_assembled_entry = commons_prepare.AssembledEntryData(
            measure_id, measure_entry, [measure_tag])

        prepare.EntryRelationshipMapper().fulfill_tag_fields(
            [app_assembled_entry, measure_assembled_entry])

        self.assertEqual(
            'https://console.cloud.google.com/datacatalog/'
            'fake_entries/test_app',
            measure_tag.fields['app_entry'].string_value)