diff --git a/conftest.py b/conftest.py index 8fae185..6ea533e 100644 --- a/conftest.py +++ b/conftest.py @@ -1 +1,20 @@ # placing this in the root allows the tests in the 'tests' directory to import the packages in the root, e.g. 'dags' +import pathlib + +import pytest +import rdflib + +rdf_file = pathlib.Path(__file__).parent / "tests" / "fixtures" / "bf.ttl" + + +@pytest.fixture +def test_graph(): + graph = rdflib.Graph() + for ns in [ + ("bf", "http://id.loc.gov/ontologies/bibframe/"), + ("bflc", "http://id.loc.gov/ontologies/bflc/"), + ("sinopia", "http://sinopia.io/vocabulary/"), + ]: + graph.namespace_manager.bind(ns[0], ns[1]) + graph.parse(rdf_file, format="turtle") + return graph diff --git a/ils_middleware/tasks/folio/mappings/bf_instance.py b/ils_middleware/tasks/folio/mappings/bf_instance.py index 5317dfd..8f524f4 100644 --- a/ils_middleware/tasks/folio/mappings/bf_instance.py +++ b/ils_middleware/tasks/folio/mappings/bf_instance.py @@ -1,6 +1,6 @@ date_of_publication = """PREFIX bf: PREFIX rdf: -PREFIX rdfs: +PREFIX rdfs: SELECT ?date WHERE {{ @@ -11,9 +11,9 @@ }} """ -identifier = """PREFIX bf: +identifier = """PREFIX bf: PREFIX rdf: -PREFIX rdfs: +PREFIX rdfs: SELECT ?identifier WHERE {{ @@ -26,7 +26,7 @@ instance_format_category = """PREFIX bf: PREFIX rdf: -PREFIX rdfs: +PREFIX rdfs: SELECT ?format_category WHERE {{ @@ -37,9 +37,9 @@ instance_format_term = """PREFIX bf: PREFIX rdf: -PREFIX rdfs: +PREFIX rdfs: -SELECT ?format_term +SELECT ?format_term WHERE {{ <{bf_instance}> a bf:Instance . <{bf_instance}> bf:carrier ?format_term . @@ -48,7 +48,7 @@ local_identifier = """PREFIX bf: PREFIX rdf: -PREFIX rdfs: +PREFIX rdfs: SELECT ?identifier WHERE {{ @@ -69,7 +69,7 @@ mode_of_issuance = """PREFIX bf: PREFIX rdf: -PREFIX rdfs: +PREFIX rdfs: SElECT ?mode_of_issuance WHERE {{ @@ -80,7 +80,7 @@ note = """PREFIX bf: PREFIX rdf: -PREFIX rdfs: +PREFIX rdfs: SELECT ?note WHERE {{ @@ -93,7 +93,7 @@ physical_description_dimensions = """PREFIX bf: PREFIX rdf: -PREFIX rdfs: +PREFIX rdfs: SELECT ?dimensions WHERE {{ @@ -104,7 +104,7 @@ physical_description_extent = """PREFIX bf: PREFIX rdf: -PREFIX rdfs: +PREFIX rdfs: SELECT ?extent WHERE {{ @@ -117,7 +117,7 @@ place = """PREFIX bf: PREFIX rdf: -PREFIX rdfs: +PREFIX rdfs: SELECT ?place WHERE {{ @@ -131,7 +131,7 @@ publisher = """PREFIX bf: PREFIX rdf: -PREFIX rdfs: +PREFIX rdfs: SELECT ?publisher WHERE {{ @@ -146,7 +146,7 @@ title = """PREFIX bf: PREFIX rdf: -PREFIX rdfs: +PREFIX rdfs: SELECT ?main_title ?subtitle ?part_number ?part_name WHERE {{ @@ -164,4 +164,4 @@ ?title bf:partName ?part_name }} }} -""" \ No newline at end of file +""" diff --git a/ils_middleware/tasks/folio/mappings/bf_work.py b/ils_middleware/tasks/folio/mappings/bf_work.py index 7637747..a73ab47 100644 --- a/ils_middleware/tasks/folio/mappings/bf_work.py +++ b/ils_middleware/tasks/folio/mappings/bf_work.py @@ -1,7 +1,7 @@ contributor = """PREFIX bf: PREFIX bflc: PREFIX rdf: -PREFIX rdfs: +PREFIX rdfs: SELECT ?agent ?role WHERE {{ @@ -12,13 +12,13 @@ ?role_uri rdfs:label ?role . ?contrib_bnode bf:agent ?agent_uri . ?agent_uri a {bf_class} . - ?agent_uri rdfs:label ?agent . + ?agent_uri rdfs:label ?agent . }} """ editions = """PREFIX bf: PREFIX rdf: -PREFIX rdfs: +PREFIX rdfs: SELECT ?edition WHERE {{ @@ -29,7 +29,7 @@ instance_type_id = """PREFIX bf: -SELECT ?instance_type_id +SELECT ?instance_type_id WHERE {{ <{bf_work}> a bf:Work . <{bf_work}> bf:content ?instance_type . @@ -50,7 +50,7 @@ primary_contributor = """PREFIX bf: PREFIX bflc: PREFIX rdf: -PREFIX rdfs: +PREFIX rdfs: SELECT ?agent ?role WHERE {{ @@ -61,13 +61,13 @@ ?role_uri rdfs:label ?role . ?contrib_bnode bf:agent ?agent_uri . ?agent_uri a {bf_class} . - ?agent_uri rdfs:label ?agent . + ?agent_uri rdfs:label ?agent . }} """ subject = """PREFIX bf: PREFIX rdf: -PREFIX rdfs: +PREFIX rdfs: SELECT ?subject WHERE {{ @@ -77,4 +77,4 @@ ?subject_node rdfs:label ?subject . }} }} -""" \ No newline at end of file +""" diff --git a/tests/tasks/folio/mappings/bf.ttl b/tests/fixtures/bf.ttl similarity index 100% rename from tests/tasks/folio/mappings/bf.ttl rename to tests/fixtures/bf.ttl diff --git a/tests/tasks/folio/mappings/conftest.py b/tests/tasks/folio/mappings/conftest.py deleted file mode 100644 index b78bfed..0000000 --- a/tests/tasks/folio/mappings/conftest.py +++ /dev/null @@ -1,16 +0,0 @@ -import pathlib - -import pytest -import rdflib - -rdf_file = pathlib.Path(__file__).parent / "bf.ttl" - -@pytest.fixture -def test_graph(): - graph = rdflib.Graph() - for ns in [("bf", "http://id.loc.gov/ontologies/bibframe/"), - ("bflc", "http://id.loc.gov/ontologies/bflc/"), - ("sinopia", "http://sinopia.io/vocabulary/")]: - graph.namespace_manager.bind(ns[0], ns[1]) - graph.parse(rdf_file, format='turtle') - return graph \ No newline at end of file diff --git a/tests/tasks/folio/mappings/test_bf_instance.py b/tests/tasks/folio/mappings/test_bf_instance.py index 1adc69c..27343cc 100644 --- a/tests/tasks/folio/mappings/test_bf_instance.py +++ b/tests/tasks/folio/mappings/test_bf_instance.py @@ -1,10 +1,10 @@ - -import pytest +import pytest # noqa: F401 import rdflib import ils_middleware.tasks.folio.mappings.bf_instance as bf_instance_map -uri = 'https://api.stage.sinopia.io/resource/b0319047-acd0-4f30-bd8b-98e6c1bac6b0' +uri = "https://api.stage.sinopia.io/resource/b0319047-acd0-4f30-bd8b-98e6c1bac6b0" + def test_date_of_publication(test_graph: rdflib.Graph): sparql = bf_instance_map.date_of_publication.format(bf_instance=uri) @@ -12,71 +12,80 @@ def test_date_of_publication(test_graph: rdflib.Graph): assert str(dates[0]).startswith("2020") + def test_isbn(test_graph: rdflib.Graph): - sparql = bf_instance_map.identifier.format( - bf_instance=uri, bf_class="bf:Isbn" - ) + sparql = bf_instance_map.identifier.format(bf_instance=uri, bf_class="bf:Isbn") isbns = [row[0] for row in test_graph.query(sparql)] assert str(isbns[0]).startswith("9788869694110") assert str(isbns[1]).startswith("9788869694103") + def test_media_format(test_graph: rdflib.Graph): sparql = bf_instance_map.instance_format_category.format(bf_instance=uri) media_formats = [row[0] for row in test_graph.query(sparql)] assert str(media_formats[0]).startswith("http://id.loc.gov/vocabulary/mediaTypes/c") + def test_carrier_term(test_graph: rdflib.Graph): sparql = bf_instance_map.instance_format_term.format(bf_instance=uri) terms = [row[0] for row in test_graph.query(sparql)] assert str(terms[0]).startswith("http://id.loc.gov/vocabulary/carriers/cr") + def test_local_idenitifier(test_graph: rdflib.Graph): sparql = bf_instance_map.local_identifier.format(bf_instance=uri) local_idents = [row[0] for row in test_graph.query(sparql)] assert str(local_idents[0]).startswith("1272909598") - + + def test_mode_of_issuance(test_graph: rdflib.Graph): sparql = bf_instance_map.mode_of_issuance.format(bf_instance=uri) modes = [row[0] for row in test_graph.query(sparql)] assert str(modes[0]).startswith("http://id.loc.gov/vocabulary/issuance/mono") + def test_note(test_graph: rdflib.Graph): sparql = bf_instance_map.note.format(bf_instance=uri) notes = [row[0] for row in test_graph.query(sparql)] assert len(str(notes[0])) == 50 assert len(str(notes[1])) == 90 - + + def test_physical_description_dimensions(test_graph: rdflib.Graph): sparql = bf_instance_map.physical_description_dimensions.format(bf_instance=uri) dimensions = [row[0] for row in test_graph.query(sparql)] assert str(dimensions[0]).startswith("30 cm by 15 cm") + def test_physical_description_extent(test_graph: rdflib.Graph): sparql = bf_instance_map.physical_description_extent.format(bf_instance=uri) extents = [row[0] for row in test_graph.query(sparql)] assert str(extents[0]).startswith("1 online resource (128 pages)") + def test_place(test_graph: rdflib.Graph): sparql = bf_instance_map.place.format(bf_instance=uri) places = [row[0] for row in test_graph.query(sparql)] assert str(places[0]).startswith("Venice (Italy)") + def test_publisher(test_graph: rdflib.Graph): sparql = bf_instance_map.publisher.format(bf_instance=uri) publishers = [row[0] for row in test_graph.query(sparql)] assert str(publishers[0]).startswith("Edizioni Ca'Foscari") + def test_main_title(test_graph: rdflib.Graph): sparql = bf_instance_map.title.format(bf_instance=uri, bf_class="bf:Title") titles = [row for row in test_graph.query(sparql)] @@ -84,10 +93,9 @@ def test_main_title(test_graph: rdflib.Graph): assert str(titles[0][0]).startswith("Scrivere di Islam") assert str(titles[0][1]).startswith("raccontere la diaspora") + def test_parallel_title(test_graph: rdflib.Graph): - sparql = bf_instance_map.title.format( - bf_instance=uri, bf_class="bf:ParallelTitle" - ) + sparql = bf_instance_map.title.format(bf_instance=uri, bf_class="bf:ParallelTitle") titles = [row for row in test_graph.query(sparql)] assert str(titles[0][0]).startswith("Writing about Islam") diff --git a/tests/tasks/folio/mappings/test_bf_work.py b/tests/tasks/folio/mappings/test_bf_work.py index f9ab982..0046122 100644 --- a/tests/tasks/folio/mappings/test_bf_work.py +++ b/tests/tasks/folio/mappings/test_bf_work.py @@ -1,4 +1,4 @@ -import pytest +import pytest # noqa: F401 import rdflib import ils_middleware.tasks.folio.mappings.bf_work as bf_work_map @@ -6,15 +6,16 @@ work_uri = "https://api.stage.sinopia.io/resource/c96d8b55-e0ac-48a5-9a9b-b0684758c99e" + def test_contributor_author_person(test_graph: rdflib.Graph): - sparql = bf_work_map.contributor.format(bf_work=work_uri, - bf_class="bf:Person") + sparql = bf_work_map.contributor.format(bf_work=work_uri, bf_class="bf:Person") contributors = [row for row in test_graph.query(sparql)] assert str(contributors[0][0]).startswith("Ramzanali Fazel, Shirin") assert str(contributors[0][1]).startswith("Author") + def test_edition(test_graph: rdflib.Graph): sparql = bf_work_map.editions.format(bf_work=work_uri) @@ -30,6 +31,7 @@ def test_instance_type_id(test_graph: rdflib.Graph): assert str(type_idents[0]).startswith("Text") + def test_language(test_graph: rdflib.Graph): sparql = bf_work_map.language.format(bf_work=work_uri) @@ -37,8 +39,11 @@ def test_language(test_graph: rdflib.Graph): assert str(languages[0]).startswith("Italian") + def test_primary_contributor(test_graph: rdflib.Graph): - sparql = bf_work_map.primary_contributor.format(bf_work=work_uri, bf_class="bf:Person") + sparql = bf_work_map.primary_contributor.format( + bf_work=work_uri, bf_class="bf:Person" + ) primary_contributors = [row for row in test_graph.query(sparql)] @@ -48,10 +53,10 @@ def test_primary_contributor(test_graph: rdflib.Graph): assert str(primary_contributors[1][0]).startswith("Blow, C. Joe") assert str(primary_contributors[1][1]).startswith("Author") + def test_subject(test_graph: rdflib.Graph): sparql = bf_work_map.subject.format(bf_work=work_uri) subjects = [row for row in test_graph.query(sparql)] assert len(subjects) == 3 -