diff --git a/integrationtests/basic_example/test_basic.py b/integrationtests/basic_example/test_basic.py index a4261cd92fec32b757f3abd210881d49e6a5e381..dbc506ef5107df3a9fab0f109de6a0e08c37b63e 100755 --- a/integrationtests/basic_example/test_basic.py +++ b/integrationtests/basic_example/test_basic.py @@ -33,6 +33,7 @@ import argparse import sys from argparse import RawTextHelpFormatter from caoscrawler import Crawler, SecurityMode +from caoscrawler.identifiable import Identifiable import caosdb as db from caoscrawler.identifiable_adapters import CaosDBIdentifiableAdapter import pytest @@ -106,6 +107,13 @@ def crawler_extended(ident): return cr +def test_ambigious_lookup(clear_database, usemodel, crawler, ident): + ins, ups = crawler.synchronize() + with pytest.raises(RuntimeError, match=".*unambigiously.*"): + print(crawler.identifiableAdapter.retrieve_identified_record_for_identifiable( + Identifiable(record_type="Measurement"))) + + def test_single_insertion(clear_database, usemodel, crawler, ident): ins, ups = crawler.synchronize() diff --git a/unittests/test_identifiable.py b/unittests/test_identifiable.py index ab33edea6cd25fdfbb6968c5a16a2d4cf0d9efca..4c695d6f8ea7f3887972833dd75be5c7071dace3 100644 --- a/unittests/test_identifiable.py +++ b/unittests/test_identifiable.py @@ -57,3 +57,20 @@ def test_create_hashable_string(): Identifiable(record_type="B", properties={'a': [db.Record()]}) ) != Identifiable._create_hashable_string( Identifiable(record_type="B", properties={'a': [db.Record()]}))) + + +def test_equality(): + assert Identifiable( + record_id=12, properties={"a": 0}) == Identifiable(record_id=12, properties={"a": 1}) + assert Identifiable( + record_id=12, properties={"a": 0}) != Identifiable(record_id=13, properties={"a": 0}) + assert Identifiable( + record_id=12, properties={"a": 0}) == Identifiable(properties={"a": 0}) + assert Identifiable( + path="a", properties={"a": 0}) != Identifiable(path="b", properties={"a": 0}) + assert Identifiable( + path="a", properties={"a": 0}) == Identifiable(path="a", properties={"a": 1}) + assert Identifiable( + path="a", properties={"a": 0}) == Identifiable(properties={"a": 0}) + assert Identifiable(properties={"a": 0}) == Identifiable(properties={"a": 0}) + assert Identifiable(properties={"a": 0}) != Identifiable(properties={"a": 1}) diff --git a/unittests/test_identified_cache.py b/unittests/test_identified_cache.py index f6edbdfa6023de635483b8cde23a6372bec87b9c..4ed7c55c7326415308917e20e9f391b17b07ad87 100644 --- a/unittests/test_identified_cache.py +++ b/unittests/test_identified_cache.py @@ -32,9 +32,6 @@ from caoscrawler.identifiable import Identifiable from caoscrawler.identified_cache import IdentifiedCache -def test_create_hash(): - - def test_IdentifiedCache(): ident = Identifiable(name="A", record_type="B") record = db.Record("A").add_parent("B").add_property('b', 5) diff --git a/unittests/test_tool.py b/unittests/test_tool.py index f81ee2fa2ea7ab024570b1082bc7192b26c07045..429265f5fabb0d7335d754490d37ff901a0448a3 100755 --- a/unittests/test_tool.py +++ b/unittests/test_tool.py @@ -334,6 +334,10 @@ def test_provenance_debug_data(crawler): assert check_key_count("Person") == 14 +def test_split_into_inserts_and_updates_trivial(crawler): + crawler.split_into_inserts_and_updates([]) + + def basic_retrieve_by_name_mock_up(rec, known): """ returns a stored Record if rec.name is an existing key, None otherwise """ if rec.name in known: @@ -358,11 +362,6 @@ def crawler_mocked_identifiable_retrieve(crawler): return crawler -def test_split_into_inserts_and_updates_trivial(crawler): - # Try trivial argument - crawler.split_into_inserts_and_updates([]) - - def test_split_into_inserts_and_updates_single(crawler_mocked_identifiable_retrieve): crawler = crawler_mocked_identifiable_retrieve identlist = [Identifiable(name="A", record_type="C"), Identifiable(name="B", record_type="C")]