feat: show original NAS photo paths in local gallery cards
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
import io
|
||||
|
||||
from PIL import Image
|
||||
|
||||
from pigway_frame_flow.models import PhotoSourceContent
|
||||
from pigway_frame_flow.providers.photo_sources import PhotoSourceInput
|
||||
|
||||
|
||||
def test_photo_path_survives_render_and_asset_listing(client, service, monkeypatch):
|
||||
photos = service.photo_sources
|
||||
photos.save(
|
||||
"family",
|
||||
PhotoSourceInput(
|
||||
name="Family",
|
||||
kind="synology-photos",
|
||||
location=".",
|
||||
nas_root_path="/volume1/photo",
|
||||
),
|
||||
)
|
||||
monkeypatch.setattr(photos.synology, "sid", lambda: "fixture")
|
||||
monkeypatch.setattr(
|
||||
photos.synology,
|
||||
"items",
|
||||
lambda *a, **kw: [
|
||||
{
|
||||
"id": 42,
|
||||
"filename": "original.PNG",
|
||||
"additional": {
|
||||
"folder": "/家庭/20190130",
|
||||
"resolution": {"width": 1600, "height": 1200},
|
||||
},
|
||||
}
|
||||
],
|
||||
)
|
||||
out = io.BytesIO()
|
||||
Image.new("RGB", (1600, 1200)).save(out, "PNG")
|
||||
monkeypatch.setattr(photos.synology, "download", lambda *a, **kw: out.getvalue())
|
||||
assert (
|
||||
photos.catalog("family")[0]["source_path"]
|
||||
== "/volume1/photo/家庭/20190130/original.PNG"
|
||||
)
|
||||
asset = service.content_asset(
|
||||
PhotoSourceContent(type="photo_source", source_id="family", item_id="42")
|
||||
)
|
||||
assert asset["source_path"] == "/volume1/photo/家庭/20190130/original.PNG"
|
||||
assert client.get("/api/v1/assets").json()[0]["source_path"] == asset["source_path"]
|
||||
assert (
|
||||
client.get("/api/v1/assets/" + asset["asset_id"] + "/source").json()["source"][
|
||||
"item_id"
|
||||
]
|
||||
== "42"
|
||||
)
|
||||
|
||||
|
||||
def test_missing_photo_path_is_not_invented(service):
|
||||
out = io.BytesIO()
|
||||
Image.new("RGB", (20, 20)).save(out, "JPEG")
|
||||
asset = service.assets.put(out.getvalue(), "manual.jpg")
|
||||
assert asset["source_path"] is None
|
||||
Reference in New Issue
Block a user