Skip to content
Snippets Groups Projects
Commit df463163 authored by Henrik tom Wörden's avatar Henrik tom Wörden
Browse files

TST: extend tests

parent 92346c4b
No related branches found
No related tags found
2 merge requests!53Release 0.1,!3F retrieve
......@@ -216,6 +216,7 @@ def test_ambigious_records(crawler, ident):
def test_crawler_update_list(crawler, ident):
crawler.copy_attributes = Mock()
# If the following assertions fail, that is a hint, that the test file records.xml is
# incorrect:
assert len(ident.get_records()) == 18
......@@ -369,9 +370,8 @@ def mock_retrieve(crawler):
remote_known = {"A": db.Record(id=1111, name="A")}
crawler.identifiableAdapter.retrieve_identifiable = Mock(side_effect=partial(
base_mocked_lookup, known=remote_known))
crawler.identifiableAdapter.get_registered_identifiable = Mock(side_effect=partial(
base_mocked_lookup, known={"A": db.Record(name="A").add_parent("C"),
"B": db.Record(name="B").add_parent("C")}))
crawler.identifiableAdapter.get_registered_identifiable = (
lambda x: db.Record().add_parent(x.parents[0].name))
return crawler
......@@ -393,8 +393,21 @@ def test_split_into_inserts_and_updates_single(mock_retrieve):
assert crawler.identifiableAdapter.retrieve_identifiable(entlist[1]) is None
insert, update = crawler.split_into_inserts_and_updates(deepcopy(entlist))
# crawler.identifiableAdapter.retrieve_identifiable.assert_any_call(entlist[0])
# crawler.identifiableAdapter.retrieve_identifiable.assert_any_call(entlist[1])
assert len(insert) == 1
assert insert[0].name == "B"
assert len(update) == 1
assert update[0].name == "A"
def test_split_into_inserts_and_updates_with_duplicate(mock_retrieve):
crawler = mock_retrieve
# try it with a reference
a = db.Record(name="A").add_parent("C")
b = db.Record(name="B").add_parent("C")
b.add_property("A", a)
c = db.Record(name="A").add_parent("C")
entlist = [a, b, c]
insert, update = crawler.split_into_inserts_and_updates(entlist)
assert len(insert) == 1
assert insert[0].name == "B"
assert len(update) == 1
......@@ -416,25 +429,51 @@ def test_split_into_inserts_and_updates_with_ref(mock_retrieve):
def test_split_into_inserts_and_updates_with_circ(mock_retrieve):
crawler = mock_retrieve
# try circular
crawler = mock_retrieve
a = db.Record(name="A").add_parent("C")
b = db.Record(name="B").add_parent("C")
b.add_property("A", a)
a.add_property("B", b)
entlist = [a, b]
with raises(RuntimeError):
crawler.split_into_inserts_and_updates(entlist)
def test_split_into_inserts_and_updates_with_complex(mock_retrieve):
crawler = mock_retrieve
# A
# ^
# |
# F <- B <- G
a = db.Record(name="A").add_parent("C").add_property('d', 13).add_property('e', "lskdjlsfdj")
b = db.Record(name="B").add_parent("C")
g = db.Record(name="G").add_parent("C")
f = db.Record(name="F").add_parent("C")
g.add_property("A", a)
b.add_property("A", f)
b.add_property("A", a)
entlist = [a, b, g]
insert, update = crawler.split_into_inserts_and_updates(entlist)
assert len(insert) == 3
assert "B" in [el.name for el in insert]
assert len(update) == 1
assert update[0].name == "A"
# TODO write test where the unresoled entity is not part of the identifiable
def test_split_into_inserts_and_updates_with_copy_attr(mock_retrieve):
crawler = mock_retrieve
# assume identifiable is only the name
a = db.Record(name="A")
a = db.Record(name="A").add_parent("C")
a.add_property("foo", 1)
b = db.Record(name="A")
b = db.Record(name="A").add_parent("C")
b.add_property("bar", 2)
entlist = [a, b]
insert, update = crawler.split_into_inserts_and_updates(entlist)
# expected TODO
# assert result.has_property("foo").value == 1
# assert result.has_property("bar").value == 1
assert update[0].get_property("bar").value == 2
assert update[0].get_property("foo").value == 1
def test_all_references_are_existing_already(crawler):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment