fix: restore photo captions and place recognized people after date [skip ci]
This commit is contained in:
@@ -78,6 +78,65 @@ def test_people_pagination_does_not_stop_at_500(settings, monkeypatch):
|
||||
assert calls == [0, 500, 1000]
|
||||
|
||||
|
||||
def test_caption_people_use_actual_membership_and_cache(settings, monkeypatch):
|
||||
session(settings)
|
||||
provider = SynologyPhotos(settings)
|
||||
monkeypatch.setattr(
|
||||
provider,
|
||||
"people",
|
||||
lambda space: [
|
||||
{"id": 1, "name": "Alice", "named": True},
|
||||
{"id": 2, "name": "Bob", "named": True},
|
||||
{"id": 3, "name": "3", "named": False},
|
||||
],
|
||||
)
|
||||
calls = []
|
||||
|
||||
def pages(api, version, **params):
|
||||
calls.append(api)
|
||||
return [{"id": params["person_id"]}, {"id": 10}]
|
||||
|
||||
monkeypatch.setattr(provider, "pages", pages)
|
||||
assert provider.item_people(1) == ["Alice"]
|
||||
assert provider.item_people(10) == ["Alice", "Bob"]
|
||||
assert provider.item_people(99) == []
|
||||
assert calls == ["SYNO.FotoTeam.Browse.Item"] * 2
|
||||
assert provider.item_people(10, space="personal") == ["Alice", "Bob"]
|
||||
assert calls[-2:] == ["SYNO.Foto.Browse.Item"] * 2
|
||||
|
||||
|
||||
@pytest.mark.parametrize("labels_available", [True, False])
|
||||
def test_api_caption_keeps_filename_and_folder_with_optional_people(
|
||||
service, settings, monkeypatch, labels_available
|
||||
):
|
||||
session(settings)
|
||||
provider = service.photo_sources
|
||||
monkeypatch.setattr(
|
||||
provider.synology,
|
||||
"items",
|
||||
lambda *a, **k: [row(1, "/20261017 Family@Park", "one.jpg")],
|
||||
)
|
||||
monkeypatch.setattr(provider.synology, "download", lambda *a, **k: jpeg())
|
||||
|
||||
def names(*a, **k):
|
||||
if not labels_available:
|
||||
raise FlowError("CLOUD_UNAVAILABLE", "unavailable", 502)
|
||||
return ["Alice", "Bob"]
|
||||
|
||||
monkeypatch.setattr(provider.synology, "item_people", names)
|
||||
provider.save(
|
||||
"captions",
|
||||
PhotoSourceInput(
|
||||
name="Family", kind="synology-photos", location=".", folder_caption=True
|
||||
),
|
||||
)
|
||||
_, _, caption = provider.read("captions", "1")
|
||||
assert caption["date"] == "2026-10-17"
|
||||
assert caption["title"] == "Family"
|
||||
assert caption["filename"] == "one.jpg"
|
||||
assert caption.get("people", "") == ("Alice · Bob" if labels_available else "")
|
||||
|
||||
|
||||
def test_source_without_mount_pagination_scope_and_session(
|
||||
client, service, settings, monkeypatch
|
||||
):
|
||||
|
||||
Reference in New Issue
Block a user