CiteGeist/tests/test_sources_catalog.py

61 lines
1.8 KiB
Python

from __future__ import annotations
from citegeist.sources import CrossRefSource, OpenCitationsSource, SourceRegistry, list_source_catalog, prioritized_source_keys
def test_catalog_prioritizes_existing_core_sources() -> None:
keys = prioritized_source_keys()
assert keys[:6] == ["crossref", "datacite", "europe_pmc", "openalex", "open_citations", "pubmed"]
def test_catalog_includes_open_citation_and_access_sources() -> None:
catalog = {entry.key: entry for entry in list_source_catalog()}
assert "open_citations" in catalog
assert "unpaywall" in catalog
assert catalog["open_citations"].priority == "now"
assert "doi_citations" in catalog["open_citations"].capabilities
def test_registry_loads_known_source_from_config() -> None:
registry = SourceRegistry()
registry.from_config_dict(
{
"sources": {
"crossref": {
"source_type": "crossref",
"enabled": True,
}
}
}
)
source = registry.get("crossref")
assert isinstance(source, CrossRefSource)
def test_registry_rejects_unknown_source_type() -> None:
registry = SourceRegistry()
try:
registry.from_config_dict({"sources": {"mystery": {"source_type": "mystery"}}})
except ValueError as exc:
assert "Unknown source type" in str(exc)
else:
raise AssertionError("expected ValueError for unknown source type")
def test_registry_loads_opencitations_from_config() -> None:
registry = SourceRegistry()
registry.from_config_dict(
{
"sources": {
"opencitations": {
"source_type": "opencitations",
"enabled": True,
}
}
}
)
source = registry.get("opencitations")
assert isinstance(source, OpenCitationsSource)