diff --git a/unittests/test_sync_graph.py b/unittests/test_sync_graph.py index 5ea2bee7e128c1c6234958710e48a720fe225f01..b3dc3a9b4d0c2893f375ea257f50a45d73a9ea7c 100644 --- a/unittests/test_sync_graph.py +++ b/unittests/test_sync_graph.py @@ -23,13 +23,16 @@ from unittest.mock import MagicMock, Mock, patch import linkahead as db import pytest -from caoscrawler.exceptions import ImpossibleMergeError, MissingIdentifyingProperty +from test_crawler import basic_retrieve_by_name_mock_up, mock_get_entity_by + +from caoscrawler.exceptions import (ImpossibleMergeError, + MissingIdentifyingProperty) from caoscrawler.identifiable import Identifiable from caoscrawler.identifiable_adapters import CaosDBIdentifiableAdapter from caoscrawler.sync_graph import SyncGraph from caoscrawler.sync_node import SyncNode, parent_in_list, property_in_list -from test_crawler import basic_retrieve_by_name_mock_up, mock_get_entity_by +from itertools import product @pytest.fixture @@ -66,7 +69,7 @@ def test_create_flat_list(): assert b in flat c = db.Record() c.add_property(name="a", value=a) - # This would caus recursion if it is not dealt with properly. + # This would cause a recursion error if it is not dealt with properly. a.add_property(name="c", value=c) flat = SyncGraph._create_flat_list([c]) assert len(flat) == 3 @@ -82,41 +85,33 @@ def test_create_reference_mapping(): db.RecordType().add_property("a")) ses = [a, b] + mappings = SyncGraph._create_reference_mapping(ses) + # test initialization + for index, mapping in product((0, 1), mappings): + assert id(ses[index]) in mapping + (forward_references, backward_references, forward_id_references, backward_id_references, forward_id_referenced_by, - backward_id_referenced_by) = SyncGraph._create_reference_mapping(ses) - # test initialization - assert id(ses[0]) in forward_references - assert id(ses[1]) in forward_references - assert id(ses[0]) in backward_references - assert id(ses[1]) in backward_references - assert id(ses[0]) in forward_id_references - assert id(ses[1]) in forward_id_references - assert id(ses[0]) in backward_id_references - assert id(ses[1]) in backward_id_references - assert id(ses[0]) in forward_id_referenced_by - assert id(ses[1]) in forward_id_referenced_by - assert id(ses[0]) in backward_id_referenced_by - assert id(ses[1]) in backward_id_referenced_by + backward_id_referenced_by) = mappings # a has no ref - assert len(forward_references[id(ses[0])]) == 0 - assert backward_references[id(ses[0])] == set([ses[1]]) + assert len(forward_references[id(a)]) == 0 + assert backward_references[id(a)] == set([b]) # b does - assert forward_references[id(ses[1])] == set([ses[0]]) - assert backward_references[id(ses[1])] == set() + assert forward_references[id(b)] == set([a]) + assert backward_references[id(b)] == set() # a has no identifying reference - assert forward_id_references[id(ses[0])] == set() - assert backward_references[id(ses[0])] == set([ses[1]]) + assert forward_id_references[id(a)] == set() + assert backward_id_references[id(a)] == set([b]) # b has an identifying reference - assert forward_id_references[id(ses[1])] == set([ses[0]]) - assert backward_references[id(ses[1])] == set() + assert forward_id_references[id(b)] == set([a]) + assert backward_id_references[id(b)] == set() # a has an identifying back reference - assert forward_id_referenced_by[id(ses[0])] == set() - assert backward_id_referenced_by[id(ses[0])] == set([ses[1]]) + assert forward_id_referenced_by[id(a)] == set() + assert backward_id_referenced_by[id(a)] == set([b]) # b does not - assert forward_id_referenced_by[id(ses[1])] == set([ses[0]]) - assert backward_id_referenced_by[id(ses[1])] == set() + assert forward_id_referenced_by[id(b)] == set([a]) + assert backward_id_referenced_by[id(b)] == set() @patch("caoscrawler.sync_graph.cached_get_entity_by",