def test_external_ref(app_with_data_f):
    app = app_with_data_f()

    with app.app_context():
        entrywrite.add_entries("places", places, "test", resource_version=1)
        entrywrite.add_entries(
            "municipalities", municipalities, "test", resource_version=1
        )

        referenced_entries = list(network.get_referenced_entries("places", 1, "3"))
        assert len(referenced_entries) == 1
        assert referenced_entries[0]["entry_id"] == "1"

        referenced_entries = list(network.get_referenced_entries("places", 1, "4"))
        assert 3 == len(referenced_entries)
        ref_municipalities = [
            entry
            for entry in referenced_entries
            if entry["resource_id"] == "municipalities"
        ]
        assert ref_municipalities[0]["entry_id"] in ["2", "3"]
        assert ref_municipalities[1]["entry_id"] in ["2", "3"]
        assert ref_municipalities[0]["entry_id"] != ref_municipalities[1]["id"]

        referenced_entries = list(network.get_referenced_entries("places", 1, "5"))
        assert len(referenced_entries) == 3
        ref_municipalities = [
            entry
            for entry in referenced_entries
            if entry["resource_id"] == "municipalities"
        ]
        assert ref_municipalities[0]["entry_id"] in ["2", "3"]
        assert ref_municipalities[1]["entry_id"] in ["2", "3"]
        assert ref_municipalities[0]["entry_id"] != ref_municipalities[1]["id"]
def test_no_refs_2(app_with_data_f):
    app = app_with_data_f()

    with app.app_context():
        entrywrite.add_entries("places", places[0:2], "test", resource_version=1)

        referenced_entries = list(network.get_referenced_entries("places", 1, "3"))
        assert len(referenced_entries) == 0
        referenced_entries = list(network.get_referenced_entries("places", 1, "4"))
        assert len(referenced_entries) == 0
def test_virtual_internal_ref(app_with_data_f):
    app = app_with_data_f()

    with app.app_context():
        entrywrite.add_entries("places", places[1:3], "test", resource_version=1)

        referenced_entries = list(network.get_referenced_entries("places", 1, "4"))
        assert 1 == len(referenced_entries)
        assert referenced_entries[0]["entry_id"] == "5"
def test_virtual_external_ref(app_with_data_f):
    app = app_with_data_f()

    with app.app_context():
        entrywrite.add_entries("places", places[0:1], "test", resource_version=1)
        entrywrite.add_entries(
            "municipalities", municipalities[0:1], "test", resource_version=1
        )

        referenced_entries = list(
            network.get_referenced_entries("municipalities", 1, "1")
        )
        assert 1 == len(referenced_entries)
        assert referenced_entries[0]["resource_id"] == "places"
        assert referenced_entries[0]["entry_id"] == "3"
Example #5
0
def _update_references(resource_id: str, entry_ids: List[str]) -> None:
    add = collections.defaultdict(list)
    for src_entry_id in entry_ids:
        refs = network.get_referenced_entries(resource_id, None, src_entry_id)
        for field_ref in refs:
            ref_resource_id = field_ref["resource_id"]
            ref_resource = resourcemgr.get_resource(
                ref_resource_id, version=(field_ref["resource_version"]))
            body = transform_to_index_entry(
                ref_resource, field_ref["entry"],
                ref_resource.config["fields"].items())
            metadata = resourcemgr.get_metadata(ref_resource, field_ref["id"])
            add[ref_resource_id].append(
                ((field_ref["entry_id"]), metadata, body))
    for ref_resource_id, ref_entries in add.items():
        indexer.impl.add_entries(ref_resource_id, ref_entries)