Cover remaining uncovered lines in bcda (client, store, log, pipe/cclf, flatten), bib (sync, spider, translate, ingest, item, store, format, ui), cms (express wrappers, log edge cases), api (base, gitea, rustfs, woodpecker, zotero), bls (table import), and pfs (pragma on race guard). 37,687 statements, 0 missed — 11,061 tests passing.
88 lines
3.2 KiB
Python
88 lines
3.2 KiB
Python
"""Tests for ZoteroClient."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from api.clients.zotero import ZoteroClient
|
|
|
|
|
|
class TestZoteroAuth:
|
|
def test_api_key_and_version_headers(self, capture_transport):
|
|
cap = capture_transport
|
|
c = ZoteroClient("zk", "12345", _transport=cap.transport([]))
|
|
c.list_items()
|
|
h = cap.requests[0].headers
|
|
assert h["zotero-api-key"] == "zk"
|
|
assert h["zotero-api-version"] == "3"
|
|
|
|
|
|
class TestZoteroRoutes:
|
|
def test_list_items(self, capture_transport):
|
|
cap = capture_transport
|
|
c = ZoteroClient("k", "99", _transport=cap.transport([]))
|
|
c.list_items()
|
|
req = cap.requests[0]
|
|
assert req.method == "GET"
|
|
assert req.url.path == "/users/99/items"
|
|
|
|
def test_get_item(self, capture_transport):
|
|
cap = capture_transport
|
|
c = ZoteroClient("k", "99", _transport=cap.transport({}))
|
|
c.get_item("ABC123")
|
|
assert cap.requests[0].url.path == "/users/99/items/ABC123"
|
|
|
|
def test_create_item(self, capture_transport):
|
|
cap = capture_transport
|
|
c = ZoteroClient("k", "99", _transport=cap.transport({}))
|
|
c.create_item({"itemType": "book"})
|
|
req = cap.requests[0]
|
|
assert req.method == "POST"
|
|
assert req.url.path == "/users/99/items"
|
|
|
|
def test_list_collections(self, capture_transport):
|
|
cap = capture_transport
|
|
c = ZoteroClient("k", "99", _transport=cap.transport([]))
|
|
c.list_collections()
|
|
assert cap.requests[0].url.path == "/users/99/collections"
|
|
|
|
def test_collection_items(self, capture_transport):
|
|
cap = capture_transport
|
|
c = ZoteroClient("k", "99", _transport=cap.transport([]))
|
|
c.collection_items("COL1")
|
|
assert cap.requests[0].url.path == "/users/99/collections/COL1/items"
|
|
|
|
def test_search(self, capture_transport):
|
|
cap = capture_transport
|
|
c = ZoteroClient("k", "99", _transport=cap.transport([]))
|
|
c.search("machine learning")
|
|
req = cap.requests[0]
|
|
assert req.url.path == "/users/99/items"
|
|
assert "q=machine" in str(req.url)
|
|
|
|
def test_delete_item_version_header(self, capture_transport):
|
|
cap = capture_transport
|
|
c = ZoteroClient("k", "99", _transport=cap.transport())
|
|
c.delete_item("XYZ", last_version=5)
|
|
req = cap.requests[0]
|
|
assert req.method == "DELETE"
|
|
assert req.headers["if-unmodified-since-version"] == "5"
|
|
|
|
def test_update_item(self, capture_transport):
|
|
cap = capture_transport
|
|
c = ZoteroClient("k", "99", _transport=cap.transport({}))
|
|
c.update_item("ABC", {"title": "New"})
|
|
req = cap.requests[0]
|
|
assert req.method == "PUT"
|
|
assert req.url.path == "/users/99/items/ABC"
|
|
|
|
def test_get_collection(self, capture_transport):
|
|
cap = capture_transport
|
|
c = ZoteroClient("k", "99", _transport=cap.transport({}))
|
|
c.get_collection("COL1")
|
|
assert cap.requests[0].url.path == "/users/99/collections/COL1"
|
|
|
|
def test_list_tags(self, capture_transport):
|
|
cap = capture_transport
|
|
c = ZoteroClient("k", "99", _transport=cap.transport([]))
|
|
c.list_tags()
|
|
assert cap.requests[0].url.path == "/users/99/tags"
|